# SQL查询
除了使用前面介绍的分析模型,您还可以通过SQL语句进行分析模型难以实现的高级分析,自定义查询当前集群下所有项目的数据。如果您在SQL查询中发现了有价值的内容,也可以沉淀下来作为报表,和其他模型报表一样在看板展示。
# 在语句输入框中编写查询语句
TE系统使用 Trino 查询引擎,您可以通过标准SQL编写查询语句,下面是一个最简单的例子:
SELECT
"$part_date"
, count(DISTINCT "#user_id")
FROM
ta.v_event_1
WHERE ("$part_date" BETWEEN '2023-01-01' AND '2023-01-07') AND ("$part_event" = 'login')
GROUP BY "$part_date"
ORDER BY "$part_date" ASC
在编写时需要注意下面几点:
- 字段名请使用双引号
" "
括起,也可以缺省,但如果您查询的字段名带有特殊符号(如$
、#
),则必须使用双引号 - 字符串请必须使用单引号
' '
括起 - 可以使用
SELECT
语句以及WITH
子句
在编写查询语句的过程中,您可以参考“表结构”中信息,复制表名或者表内的字段名,您也可以通过“表解析”自动将包含所有字段的查询语句插入到输入框内。
您也可以将当前语句输入框中的内容保存为书签,避免未编写完成的内容丢失,已保存的书签可以在“语句书签”中找到。
如果您需要在查询语句中使用动态时间,或者希望其他成员可以动态调整查询语句中部分内容,可以通过添加 动态参数 实现。
和其他分析模型不同,您可以在SQL查询中使用您有权限的所有项目的数据。举例来说,您可以同时查询项目1和项目2的DAU:
SELECT
a."$part_date"
, "Project_1_DAU"
, "Project_2_DAU"
FROM
((
SELECT
"$part_date"
, count(DISTINCT "#user_id") "Project_1_DAU"
FROM
ta.v_event_1
WHERE (("$part_date" BETWEEN '2023-01-01' AND '2023-01-07') AND ("$part_event" = 'login'))
GROUP BY "$part_date"
) a
INNER JOIN (
SELECT
"$part_date"
, count(DISTINCT "#user_id") "Project_2_DAU"
FROM
ta.v_event_2
WHERE (("$part_date" BETWEEN '2023-01-01' AND '2023-01-07') AND ("$part_event" = 'login'))
GROUP BY "$part_date"
) b ON (a."$part_date" = b."$part_date"))
ORDER BY a."$part_date" ASC
除了事件表、用户表外,您还可以在查询语句中使用以下数据:
- 标签分群表:ta.user_result_cluster_{project_id}
- 历史标签表 :ta.history_tag_{project_id}
- 历史汇率表 :ta_dim.ta_exchange
- 维度表
- 临时表
如果您需要在查询语句中用到下面的数据,可以联系您的客户成功经理了解具体信息:
- 用户每日镜像表:每日的服务器时区零点,TE系统会将当时的用户状态备份下来,默认保存最近180天的用户表镜像,可在SQL查询中使用
- 通过二次开发工具导入自定义表
- 借助 Trino Connectors关联外部数据源
# 查看查询结果并保存为报表
点击“计算”按钮后,您可以查看本次SQL语句的运行结果,最多展示1000行明细数据,如需查看全量数据请下载CSV文件,最大支持100万行数据。您也可以将本次查询结果保存为“临时表”,临时表可以在后续查询中使用。
除了直接查看数据明细,您也可以通过可视化模块中提供的折线图、饼状图等多种图表类型展示数据,您还可以将当前查询语句以及可视化配置保存为报表,并共享给其他成员。
和其他模型报表一样,不同成员在SQL报表中能看到的数据也会受数据权限影响,比如只有iOS渠道权限的成员看到的结果就只包含iOS渠道用户的行为数据。
在数据权限外,您还可以为SQL报表设置事件权限,如果成员不具备所选事件的使用权限则该报表将不会显示任何数据(图例1)。
需要注意的是,无论查询语句中是否使用了其他项目的数据,报表都仅保存在当前项目下。如果查询语句中出现不属于当前项目的表,您还需要确认查看者是否需具备查询涉及的所有项目权限(图例2)。
由于SQL报表的查询语句往往较为复杂,您可以设置展示缓存(图例3),计算完成后会将数据结果缓存下来,下次查询同一报表时会直接读取缓存的数据结果无需重新计算,节省集群资源。
看板定时更新会对所有SQL报表都生效,无论如何设置都将在看板定时更新时进行计算。您可以将非T+1报表的缓存设置成 24 小时,并打开看板定时更新,这样一天只需计算一次即可。
如果查询语句的执行时长超过300秒,则该报表必须设置看板缓存,您无法手动刷新该报表(看板定时刷新仍然生效)。您可以优化查询语句,或者收窄查询数据范围以加快查询速度。
# 权限说明
公司超管 | 管理员 | 分析师 | 普通成员 | |
---|---|---|---|---|
SQL查询 | ● | ● | △ | △ |
权限说明:
● 角色必有
▲ 角色默认有,可以没有
△ 角色默认没有,可以有
○ 角色必没有
需要注意,系统自带的分析师角色不具备“使用 SQL 查询”的权限,如需使用,可在新创建的分析师及以上权限的角色中添加 SQL 使用权限,并提供给使用者