基于现有自定义查询产品能力和用户使用反馈,神策分析在 V 2.5.4 版本对其产品的外观、结构和功能做了优化,使其更符合用户的使用习惯和需求。
注:本文档所描述的内容属于神策分析的高级使用功能,涉及较多技术细节,适用于对相关功能有经验的用户参考。如果对文档内容有疑惑,请咨询神策值班同学获取一对一的协助。
前提条件
已具备自定义查询 功能 权限
功能概览
功能 |
说明 |
数据库表目录 |
- 可查看数据库目录下的数据表,包含表的字段、字段类型
- 也可以点击右侧的按钮
快速查看表结构或插入查询语句或表名到 SQL 编辑器内
|
创建 SQL 查询 |
- 可新建 SQL 查询,并提供 格式化、解释、清空代码、动态参数 的操作
|
执行查询语句 |
|
查看结果操作 |
- 支持在产品页面中进行 1000 条结果数据预览
- 支持 下载 查询结果
|
已存查询目录 |
- 支持 创建分组,并将查询 添加到或保存 到指定分组内
|
进入自定义查询
您可以通过如下两种方式进入:
- 在主导航 分析 > 经营分析 下点击自定义查询(新)进到产品界面
- 在分析页面中,点击 侧导航 自定义查询(新)进到产品界面

自定义查询窗口界面介绍

序号 |
区域 |
说明 |
1 |
可视化操作区域 |
可视化查看 数据库表;可视化管理 已存查询
- 数据库表:数据库表、字段速查
- 已存查询:已存查询速查、管理
- 函数:自定义查询支持的函数列表速查目录
|
2 |
扩展功能区域 |
支持的功能如下:
- 添加到查询/业务集市:支持将查询语句保存到指定分组下进行管理;支持将查询结果保存到业务集市进行可视化报表的配置
- 创建新查询:新打开一个自定义查询的页面
- 帮助:打开帮助文档
|
3 |
SQL 执行区域 |
- 可新建 SQL 查询,并提供 格式化、解释、清空代码、动态参数 的操作
- 最多支持 5 条 SQL 查询同时运行
- 单击 运行 后执行查询语句并获取查询结果
|
4 |
执行结果区域 |
- 查询结果:执行 SQL 后可以查看执行结果,同时支持 1000 条的数据预览,支持 Excel、CSV 格式下载。
- 查询记录:支持插入历史执行过的 SQL 语句到 SQL 编辑器内;支持查看历史执行的 SQL 语句和执行结果;支持状态为查询成功的最近 100 条 SQL 语句的执行结果下载
|
基础功能
元数据辅助信息
可通过点击 evens 表右侧的 查询元事件辅助信息 按钮,查看当前项目 events 内的事件名,以及事件和属性的关系。复制事件或属性后,可通过 Ctrl + V 或右键粘贴内容到 SQL 编辑区内

动态参数
可通过点击 更多 下的 动态参数按钮 打开 动态参数配置 面板,运行时候会将 动态参数配置 面板输入的 变量值 代入到 SQL 模板中执行。支持将带有动态参数模板的 SQL 语句保存到已存查询目录中
支持通过两种形式添加动态参数:
- 在 SQL 编辑器内输入符合 ${动态参数} 格式的变量
- 点击 动态参数配置 面板内的 +添加,会在 SQL 编辑器内光标处插入 ${variable} 的变量,用户可自定义修改替换变量名


高级功能
添加到业务集市
开通业务集市功能后,支持将 SQL 查询的结果添加到业务集市中并进行可视化配置
跨项目查询
本功能为高级功能,默认不开启,请联系运维开通功能。
注释:
- 该功能对 lumen 有依赖,lumen 版本 3.2.20.221+
- 平台账号可以使用跨项目查询功能,项目账号不支持使用跨项目查询功能
场景举例
如在 游戏行业 中,客户将找茬游戏的数据存在项目一中,拼图游戏的数据存在项目二中,策略抽卡游戏的数据存在项目三中,其中找茬和拼图游戏主要是为策略游戏导流。那么跨项目查询可以满足以下场景的需求:
场景一大盘数据查看:管理层在一个报表中查看三种类型游戏的日活、留存、充值等汇总数据,实现步骤如下:
- 联系运维开通跨项目查询功能
- 了解自己需要的表结构
- 在自定义分析中写查询语句,执行查询并将查询结果保存到 业务集市
- 在报表中选择 新建报表,选择对应的 业务模型 配置报表看板
场景二数据洞察:对项目一 / 项目二中转化为项目三用户情况进行分析等,实现步骤如下:
- 联系运维开通跨项目查询功能
- 了解自己需要的项目名称,以及项目内表结构
- 在自定义分析中写查询语句,执行查询,下载分析结果到本地或制作成报表
使用说明:在哪里查看跨项目的数据库表
- 跨项目功能开启后,自定义查询数据库表左侧目录中会展示有权限项目下的全部数据库表

使用示例:以下是具体跨项目查询使用示例
- 利用 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 后带有多个表,或一个子查询