菜单

自定义 SQL

基于神策 老自定义查询 的产品功能和用户使用反馈,我们在 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+ 支持该功能

在一些业务场景中,实际的数据结果都需要经过复杂计算才能在结果表上展现出来;除此之外还有一些数据量较大的表,在其上进行统计查询通常会效率很低;为了解决查询逻辑复杂、数据量大导致的性能问题,神策上线了中间表的功能。

使用说明

  1. 创建中间表:开通 中间表 功能可在自定义 SQL 中看到 添加到中间表 入口
  2. 保存中间表:开通 任务管理 数据表管理 权限后,点击 保存中间表 跳转 创建 SQL 任务 页面,支持中间表 名称、调度周期、授权 的配置,配置规则参考: 任务管理
    1. 中间表创建个数上限受数据表管理限制
    2. 中间表查询数据条数上限受底层数据限制
  3. 查看、编辑、授权:
    1. 创建 SQL 任务 页面提交保存后,会同时生成两条记录:一条任务保存到 任务管理 列表中,一条数据保存到 数据表管理 列表中
    2. 可在 数据表管理 列表中查看该中间表的配置信息,同时有 管理数据表权限 的用户可对该中间表进行 编辑、授权(数据权限分发) 操作
  4. 中间表应用:创建成功后的中间表表,可在自定义 SQL 中应用

跨项目查询

本功能为高级功能,默认不开启,请联系运维开通功能。

注释:

  1. 该功能对 Lumen 有依赖,Lumen 版本 3.2.20.221+
  2. 平台账号可以使用跨项目查询功能,项目账号不支持使用跨项目查询功能

场景举例

如在 游戏行业 中,客户将找茬游戏的数据存在项目一中,拼图游戏的数据存在项目二中,策略抽卡游戏的数据存在项目三中,其中找茬和拼图游戏主要是为策略游戏导流。那么 跨项目查询 可以满足以下场景的需求:

场景一大盘数据查看 :管理层在一个报表中查看三种类型游戏的日活、留存、充值等汇总数据,实现步骤如下:

  1. 联系运维开通跨项目查询功能
  2. 了解自己需要的表结构
  3. 在自定义分析中写查询语句,执行查询并将查询结果保存到 业务集市
  4. 在报表中选择 新建报表 ,选择对应的 业务模型 配置报表看板

场景二数据洞察 :对项目一 / 项目二中转化为项目三用户情况进行分析等,实现步骤如下:

  1. 联系运维开通跨项目查询功能
  2. 了解自己需要的项目名称,以及项目内表结构
  3. 在自定义分析中写查询语句,执行查询,下载分析结果到本地或制作成报表

使用说明: 在哪里查看跨项目的数据库表

  • 跨项目功能开启后,自定义 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 中使用该表。

上一个
常见案例
下一个
动态参数
最近修改: 2025-03-10