基于神策 老自定义查询 的产品功能和用户使用反馈,我们在 V 2.5.4 版本对其产品的外观、结构和功能做了优化,使其更符合用户的使用习惯和需求。
注:
- 本文档所描述的内容属于神策分析的高级使用功能,涉及较多技术细节,适用于对相关功能有经验的用户参考。如果对文档内容有疑惑,请咨询神策值班同学获取一对一的协助。
- 神策分析 v2.5.4、v2.5.5 版本、v3.0.1 版本及 v3.0.1 以上版本可使用该功能
前提条件
已具备角色管理中 自定义 SQL 的功能 权限,且具有 数据表的数据权限 。
数据表的数据权限说明:神策分析 v3.0 及 v3.0 以上版本支持配置数据表的数据/查看使用权限。开启数据表及设置数据表权限详见 数据表管理
功能概览
功能 |
说明 |
数据库表目录 |
- 可查看数据库目录下的数据表,包含表的字段、字段类型
- 也可以点击右侧的按钮快速查看表结构或插入查询语句或表名到 SQL 编辑器内
|
创建 SQL 查询 |
- 可新建 SQL 查询,并提供 格式化、解释、清空代码、动态参数 的操作
|
执行查询语句 |
|
查看结果操作 |
- 支持在产品页面中进行 1000 条结果数据预览
- 支持 下载 查询结果
|
已存查询目录 |
- 支持 创建分组 ,并将查询 添加到或保存 到指定分组内
|
进入自定义 SQL
您可以通过如下两种方式进入:
- 在主导航 分析 > 经营分析 下点击自定义 SQL 进到产品界面
- 在分析页面中,点击 侧导航 自定义 SQL 进到产品界面
自定义 SQL 窗口界面介绍
序号 |
区域 |
说明 |
1 |
可视化操作区域 |
可视化查看 数据库表 ;可视化管理 已存查询
- 数据库表:数据库表、字段速查
- 已存查询:已存查询速查、管理
- 函数:自定义 SQL 支持的函数列表速查目录
|
2 |
扩展功能区域 |
支持的功能如下:
- 添加到查询/业务集市:支持将查询语句保存到指定分组下进行管理;支持将查询结果保存到业务集市进行可视化报表的配置
- 创建新查询:新打开一个自定义 SQL 的页面
- 帮助:打开帮助文档
|
3 |
SQL 执行区域 |
- 可新建 SQL 查询,并提供 格式化、解释、清空代码、动态参数 的操作
- 最多支持 5 条 SQL 查询同时运行
- 单击 运行 后执行查询语句并获取查询结果
|
4 |
执行结果区域 |
- 查询结果:执行 SQL 后可以查看执行结果,同时支持 1000 条的数据预览,支持 Excel、CSV 格式下载。
- 查询记录:支持插入历史执行过的 SQL 语句到 SQL 编辑器内;支持查看历史执行的 SQL 语句和执行结果;支持状态为查询成功的最近 100 条 SQL 语句的执行结果下载。查询记录保存最近 30 天内的最近 100 条。
|
基础功能
元数据辅助信息
可通过点击 events 表右侧的 查询元事件辅助信息 按钮,查看当前项目 events 内的事件名,以及事件和属性的关系。复制事件或属性后,可通过 ctrl + V 或右键粘贴内容到 SQL 编辑区内
高级功能
添加到业务集市
开通业务集市功能后,支持将 SQL 查询的结果添加到业务集市中并进行可视化配置,详见: 添加自定义 SQL
保存到中间表
本功能为高级功能,默认不开启,请联系运维开通功能。
注释:神策分析版本 v3.0.1 及 v3.0.1+ 支持该功能
在一些业务场景中,实际的数据结果都需要经过复杂计算才能在结果表上展现出来;除此之外还有一些数据量较大的表,在其上进行统计查询通常会效率很低;为了解决查询逻辑复杂、数据量大导致的性能问题,神策上线了中间表的功能。
使用说明
- 创建中间表:开通 中间表 功能可在自定义 SQL 中看到 添加到中间表 入口
- 保存中间表:开通 任务管理 和 数据表管理 权限后,点击 保存中间表 跳转 创建 SQL 任务 页面,支持中间表 名称、调度周期、授权 的配置,配置规则参考: 任务管理
- 中间表创建个数上限受数据表管理限制
- 中间表查询数据条数上限受底层数据限制
- 查看、编辑、授权:
- 在 创建 SQL 任务 页面提交保存后,会同时生成两条记录:一条任务保存到 任务管理 列表中,一条数据保存到 数据表管理 列表中
- 可在 数据表管理 列表中查看该中间表的配置信息,同时有 管理数据表权限 的用户可对该中间表进行 编辑、授权(数据权限分发) 操作
- 中间表应用:创建成功后的中间表表,可在自定义 SQL 中应用
跨项目查询
本功能为高级功能,默认不开启,请联系运维开通功能。
注释:
- 该功能对 Lumen 有依赖,Lumen 版本 3.2.20.221+
- 平台账号可以使用跨项目查询功能,项目账号不支持使用跨项目查询功能
场景举例
如在 游戏行业 中,客户将找茬游戏的数据存在项目一中,拼图游戏的数据存在项目二中,策略抽卡游戏的数据存在项目三中,其中找茬和拼图游戏主要是为策略游戏导流。那么 跨项目查询 可以满足以下场景的需求:
场景一大盘数据查看 :管理层在一个报表中查看三种类型游戏的日活、留存、充值等汇总数据,实现步骤如下:
- 联系运维开通跨项目查询功能
- 了解自己需要的表结构
- 在自定义分析中写查询语句,执行查询并将查询结果保存到 业务集市
- 在报表中选择 新建报表 ,选择对应的 业务模型 配置报表看板
场景二数据洞察 :对项目一 / 项目二中转化为项目三用户情况进行分析等,实现步骤如下:
- 联系运维开通跨项目查询功能
- 了解自己需要的项目名称,以及项目内表结构
- 在自定义分析中写查询语句,执行查询,下载分析结果到本地或制作成报表
使用说明: 在哪里查看跨项目的数据库表
- 跨项目功能开启后,自定义 SQL 数据库表左侧目录中会展示有权限项目下的全部数据库表
使用示例:以下是具体跨项目查询使用示例
- 利用 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
脱敏
本功能为高级功能,默认不开启,请联系运维开启功能。
根据登录用户在 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 后带有多个表,或一个子查询
FAQ
为什么神策分析 3.0.0 以下版本可以使用的数据表,在 3.0.0 + 版本中看不到了?
答:基于数据安全的考虑,在 3.0.0 + 版本中神策分析支持了数据表权限分发的能力,若 3.0.0 以下可用的表在升级 3.0.0 + 后不可用,可以向有 数据表管理 权限的用户申请数据表的使用权限,申请后即可在自定义 SQL 中使用该表。