自定义 SQL
|
收藏
基于神策老自定义查询的产品功能和用户使用反馈,我们在 V 2.5.4 版本对其产品的外观、结构和功能做了优化,使其更符合用户的使用习惯和需求。
注:
- 本文档所描述的内容属于神策分析的高级使用功能,涉及较多技术细节,适用于对相关功能有经验的用户参考。如果对文档内容有疑惑,请咨询神策值班同学获取一对一的协助。
- 神策分析 v2.5.4、v2.5.5 版本、v3.0.1 版本及 v3.0.1 以上版本可使用该功能
1. 前提条件
已具备角色管理中 自定义 SQL 的功能 权限,且具有 数据表的数据权限。
数据表的数据权限说明:神策分析分析 v3.0 及 v3.0 以上版本支持配置数据表的数据/查看使用权限。 开启数据表及设置数据表权限详见 数据表管理
2. 功能概览
功能 | 说明 |
---|---|
数据库表目录 |
|
创建SQL查询 |
|
执行查询语句 |
|
查看结果操作 |
|
已存查询目录 |
|
3. 进入自定义 SQL
您可以通过如下两种方式进入:
- 在主导航 分析 > 经营分析 下点击自定义 SQL 进到产品界面
- 在分析页面中,点击 侧导航 自定义 SQL 进到产品界面
4. 自定义 SQL 窗口界面介绍
序号 | 区域 | 说明 |
---|---|---|
1 | 可视化操作区域 | 可视化查看「数据库表」;可视化管理「已存查询」
|
2 | 扩展功能区域 | 支持的功能如下:
|
3 | SQL执行区域 |
|
4 | 执行结果区域 |
|
5. 基础功能
5.1. 元数据辅助信息
可通过点击 evens 表右侧的「查询元事件辅助信息」按钮,查看当前项目 events 内的事件名,以及事件和属性的关系。复制事件或属性后,可通过 ctrl +V 或右键粘贴内容到SQL编辑区内
5.2. 动态参数
可通过点击 更多 下的动态 参数按钮 打开 动态参数配置 面板,运行时候会将 动态参数配置 面板输入的 变量值 代入到SQL模板中执行。支持将带有动态参数模板的SQL语句保存到已存查询目录中
支持通过两种形式添加动态参数:
- 在SQL编辑器内输入符合 ${动态参数} 格式的变量
- 点击 动态参数配置 面板内的 +添加 ,会在SQL编辑器内光标处插入 ${variable} 的变量,用户可自定义修改替换变量名
6. 高级功能
6.1. 添加到业务集市
开通业务集市功能后,支持将SQL查询的结果添加到业务集市中并进行可视化配置,详见:添加自定义 SQL
6.2. 保存到中间表
本功能为高级功能,默认不开启,请联系运维开通功能。
注释:神策分析版本 v3.0.1 及 v3.0.1+ 支持该功能
在一些业务场景中,实际的数据结果都需要经过复杂计算才能在结果表上展现出来;除此之外还有一些数据量较大的表,在其上进行统计查询通常会效率很低;为了解决查询逻辑复杂、数据量大导致的性能问题,神策上线了中间表的功能。
6.2.1. 使用说明
- 创建中间表:开通 中间表 功能可在自定义 SQL 中看到「添加到中间表」入口
- 保存中间表:开通 任务管理 和 数据表管理 权限后,点击 保存中间表 跳转【创建SQL任务】页面,支持中间表 名称、调度周期、授权 的配置,配置规则参考:任务管理
- 中间表创建个数上限受数据表管理限制
- 中间表查询数据条数上限受底层数据限制
- 查看、编辑、授权:
- 在【创建SQL任务】页面提交保存后,会同时生成两条记录:一条任务保存到【任务管理】列表中,一条数据保存到【数据表管理】列表中
- 可在【数据表管理】列表中查看该中间表的配置信息,同时有 管理数据表权限 的用户可对该中间表进行 编辑、授权(数据权限分发) 操作
- 中间表应用:创建成功后的中间表表,可在自定义 SQL 中应用
6.3. 跨项目查询
本功能为高级功能,默认不开启,请联系运维开通功能。
注释:
- 该功能对lumen 有依赖,lumen版本 3.2.20.221+
- 平台账号可以使用跨项目查询功能,项目账号不支持使用跨项目查询功能
6.3.1. 场景举例
如在 游戏行业 中,客户将找茬游戏的数据存在项目一中,拼图游戏的数据存在项目二中,策略抽卡游戏的数据存在项目三中,其中找茬和拼图游戏主要是为策略游戏导流。那么跨项目查询可以满足以下场景的需求:
场景一大盘数据查看:管理层在一个报表中查看三种类型游戏的日活、留存、充值等汇总数据,实现步骤如下:
- 联系运维开通跨项目查询功能
- 了解自己需要的表结构
- 在自定义分析中写查询语句,执行查询并将查询结果保存到 业务集市
- 在报表中选择 新建报表,选择对应的 业务模型 配置报表看板
场景二数据洞察 :对项目一 / 项目二中转化为项目三用户情况进行分析等,实现步骤如下:
- 联系运维开通跨项目查询功能
- 了解自己需要的项目名称,以及项目内表结构
- 在自定义分析中写查询语句,执行查询,下载分析结果到本地或制作成报表
6.3.2. 使用说明:在哪里查看跨项目的数据库表
- 跨项目功能开启后,自定义 SQL 数据库表左侧目录中会展示有权限项目下的全部数据库表
6.3.3. 使用示例:以下是具体跨项目查询使用示例
- 利用 UNION/UNION ALL 对两个项目的查询结果进行交并集处理展示
- 例如:查看两个项目 12 月以来每天进行 App安装 事件的次数
SELECT 'production' as project, date, count(1)
FROM horizon_production_2.events
WHERE event like 'AppInstall' and `date` > '2022-12-01'
GROUP BY 1,2
UNION ALL
SELECT 'default' as project, date, count(1)
FROM horizon_default_1.events
WHERE event = 'AppInstall' and `date` > '2022-12-01'
GROUP BY 1,2
- 利用 JOIN 语句对两个项目的数据表进行联合查询
- 例如:查看当日下在「projectId=1, projectName=default」的项目下的「user_group_user_group_1」的用户分群在 「projectId=2, projectName=production」的项目中进行的 「AppClick」的总次数
SELECT count(1)
FROM horizon_production_2.events events
INNER JOIN horizon_default_1.user_group_user_group_1 user_group1 ON events.user_id = user_group1.user_id
WHERE event = 'AppClick' and `date` = CURRENT_DATE()
- 例如:查看在「projectId=2, projectName=production」的项目下的「event」在 「projectId=1, projectName=zwp_001_3.」的项目中 「date、distinct_id、`$element_target_url`、`$country`、`$utm_campaign`」的数据情况
SELECT e1.event,
e2.date,
e2.distinct_id,
e2.`$element_target_url`,
e2.`$country`,
e2.`$utm_campaign`
FROM horizon_production_2.events e1
LEFT JOIN horizon_zwp_001_3.events e2 ON e1.event = e2.event
6.4. 脱敏
本功能为高级功能,默认不开启,请联系运维开启功能。
根据登录用户在SBP数据权限、脱敏属性配置页面,对需要进行事件属性或者用户属性需要脱敏字段的配置,在hue界面书写的sql语句中,对脱敏字段进行预校验。
【现阶段对于脱敏显示、禁止分组与筛选 不做区分,SQL中涉及到了脱敏属性直接报错】
目前实现的 SQL 解析效果:
- 支持 SELECT 语句,包含:Select、From、Where、Group By、Order By
- 支持在 FROM 和 WHERE 后带有子查询 (与 Impala 一致)
- 暂不支持 WHERE 后的子查询中又嵌套子查询,例如:where column=(select xxx from (...) t where...)
- 暂不支持 FROM 后带有多个同层级的子查询,例如:from (...) a, (...) b
- 支持FROM 后带有多个表,或一个子查询
7. FAQ
7.1. 为什么神策分析 3.0.0 以下版本可以使用的数据表,在3.0.0+版本中看不到了?
答:基于数据安全的考虑,在 3.0.0 + 版本中神策分析支持了数据表权限分发的能力,若 3.0.0 以下可用的表在升级3.0.0 +后不可用,可以像有「数据表管理」权限的用户申请数据表的使用权限,申请后即可在自定义SQL中使用该表
注:本文档内容为神策产品使用和技术细节说明文档,不包含适销类条款;具体企业采购产品和技术服务内容,以商业采购合同为准。