5

SeaTable 新增 SQL 查询接口,让数据分析和查询更方便

 2 years ago
source link: https://segmentfault.com/a/1190000040635389
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

SeaTable 开发者版是一款免费易用、可扩展的数据中台产品。它同时结合了协同表格的易用性和数据库强大的数据处理能力。从 2.3 版本开始,SeaTable 在数据分析方面又有了一个重大的增强,那就是对 SQL 查询的支持。SQL 查询功能可以通过界面的插件来使用(如下图),也可以通过 API 来访问。 下面来详细介绍 SQL 查询。

image.png

SQL 查询语句介绍

SeaTable 中的 SQL 查询语句的语法和 MySQL 是一致的,能方便大家快速上手。语法如下:

SELECT [DISTINCT] fields FROM table_name [WhereClause] [OrderByClause] [GroupByClause] [Limit Option]

查询结果是以 JSON 的格式进行返回。当然目前还有一些限制,主要是不支持多表查询 join 语句。

特色函数

SeaTable 目前主要的应用场景是对数据进行统计分析。所以它支持一些特殊的的函数,方便对数据做统计:

  • STARTOFWEEK(date, weekStart):返回一个日期所属的星期,方便按照星期来统计。
  • Quarter(date):返回一个日期所属的季度,方便按照季度来统计。
  • ISODate(date):返回一个 ISO 格式的日期, 如: "2020-09-08",方便按照天来统计。
  • ISOMonth(date):返回 ISO 格式的月份, 如 "07",方便按照月份来统计。

举一个例子,如果我们有一个表记录了订单流水,我们要统计每天的销售额,只需要用以下的查询语句:

select sum(sale) from SalesRecord group by ISODate(SalesTime)

如果我们想要得到以下统计图需要的数据,也可以用 SQL 语句来轻松得到:

image.png

怎么使用查询接口

SeaTable 提供了三种方法,方便你在任何地方通过网络来查询数据,包括:

  • APIPython
  • APISQL 查询插件

Rest API

使用 Rest API 非常简单,你不用再分配和管理用户名、密码,只需要分配一个 API token 就可以。通过网页界面就可以生成一个表格的 API token:

image.png

用这个 API token 再获取一个临时的秘钥,然后访问下面的接口就可以了

POST https://dtable-db.seatable.cn/api/v1/query/<dtable-uuid>
curl -X POST \
  https://dtable-db.seatable.cn/api/v1/query/4c4ef1ee-86cf-4a53-bd02-2cb7b1662a11/ \
  -H 'Authorization: Token eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MzAyOTA3NjMsImR0YWJsZV91dWlkIjoiNGM0ZWYxZWUtODZjZi00YTUzLWJkMDItMmNiN2IxNjYyYTExIiwidXNlcm5hbWUiOiJqaXdlaS5yYW5Ac2VhZmlsZS5jb20iLCJpZF9pbl9vcmciOiJXLTAwMDI2IiwicGVybWlzc2lvbiI6InJ3In0.KG5WQEduNsC8-k61oAcby7bhF6seVXrjnG7rGLsHQds' \
  -H 'Content-Type: application/json' \
  -d '{
    "sql": "select * from Table2 limit 1"
}'

返回的结果

{
    "metadata": [{
        "key": "0000",
        "name": "名称",
        "type": "text",
        "data": null
    }, ...
    ],
    "results": [{
        "0000": "fdddf",
        "_creator": "[email protected]",
        "_ctime": "2021-07-14T09:10:35.225Z",
        "_id": "JkVwFfWMQ7Sfno1VAxHv8w",
        "_last_modifier": "[email protected]",
        "_mtime": "2021-07-23T01:44:32.507Z",
        "_participants": [],
        "qi70": "711776",
        "wcls": "sdf"
    }],
    "success": true
}

Python SDK

上面的 Rest API 已经在 Python SDK 中做了包装,可以方便的调用;

base.query('select name, price, year from Bill')
base.query('select name, sum(price) from Bill group by name')

分别返回:

[
    {'_id': 'PzBiZklNTGiGJS-4c0_VLw', 'name': 'Bob', 'price': 300, 'year': 2019},
    {'_id': 'Ep7odyv1QC2vDQR2raMvSA', 'name': 'Bob', 'price': 300, 'year': 2021},
    {'_id': 'f1x3X_8uTtSDUe9D60VlYQ', 'name': 'Tom', 'price': 100, 'year': 2019},
    {'_id': 'NxeaB5pDRFKOItUs_Ugxug', 'name': 'Tom', 'price': 100, 'year': 2020},
    {'_id': 'W0BrjGQpSES9nfSytvXgMA', 'name': 'Tom', 'price': 200, 'year': 2021},
    {'_id': 'EvwCWtX3RmKYKHQO9w2kLg', 'name': 'Jane', 'price': 200, 'year': 2020},
    {'_id': 'BTiIGSTgR06UhPLhejFctA', 'name': 'Jane', 'price': 200, 'year': 2021}
]

[
    {'SUM(price)': 600, 'name': 'Bob'},
    {'SUM(price)': 400, 'name': 'Tom'},
    {'SUM(price)': 400, 'name': 'Jane'}
]

SQL 查询插件

SeaTable 提供了 SQL 查询插件,用户可以在 UI 层面上直接查询,这样在开发的时候就可以方便地对 SQL 语句做调试。

查询结果会直接以 SeaTable 表格的方式呈现:

image.png

以上,我们了解了 SeaTable 的“SQL 查询”的功能及使用,它使得内部分析数据、外部用户查询数据都变得更加方便。当然,这只是其中一个功能。SeaTable 开发者版作为一款免费、易用、可扩展的企业数据中台产品,具有协同表格的易用性和数据库强大的数据处理能力,从数据的收集、存储、自动化处理,到可视化、高级统计分析、协作管控等方面都提供了非常好用的功能。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK