基于神策老自定义查询的产品功能和用户使用反馈,我们在 V 2.5.4 版本对其产品的外观、结构和功能做了优化,使其更符合用户的使用习惯和需求。

注:

  • 本文档所描述的内容属于神策分析的高级使用功能,涉及较多技术细节,适用于对相关功能有经验的用户参考。如果对文档内容有疑惑,请咨询神策值班同学获取一对一的协助。
  • 神策分析  v2.5.4、v2.5.5 版本、v3.0.1 版本及 v3.0.1 以上版本可使用该功能


1. 前提条件

已具备角色管理中 自定义 SQL 的功能 权限,且具有 数据表的数据权限

数据表的数据权限说明:神策分析分析 v3.0 及 v3.0 以上版本支持配置数据表的数据/查看使用权限。  开启数据表及设置数据表权限详见 数据表管理

2. 功能概览

功能说明
数据库表目录


  • 可查看数据库目录下的数据表,包含表的字段、字段类型
  • 也可以点击右侧的按钮快速查看表结构或插入查询语句或表名到SQL编辑器内


创建SQL查询
  • 可新建SQL查询,并提供 格式化、解释、清空代码、动态参数 的操作
执行查询语句
  • 单击 运行 后执行查询语句并获取查询结果
查看结果操作
  • 支持在产品页面中进行1000条结果数据预览
  • 支持 下载 查询结果
已存查询目录
  • 支持 创建分组,并将查询 添加到或保存 到指定分组内


3. 进入自定义 SQL

您可以通过如下两种方式进入:

  • 在主导航 分析 > 经营分析 下点击自定义 SQL 进到产品界面
  • 在分析页面中,点击 侧导航 自定义 SQL 进到产品界面


4. 自定义 SQL 窗口界面介绍

序号区域说明
1可视化操作区域

可视化查看「数据库表」;可视化管理「已存查询」

  • 数据库表:数据库表、字段速查
  • 已存查询:已存查询速查、管理
  • 函数:自定义 SQL 支持的函数列表速查目录
2扩展功能区域

支持的功能如下:

  • 添加到查询/业务集市:支持将查询语句保存到指定分组下进行管理;支持将查询结果保存到业务集市进行可视化报表的配置
  • 创建新查询:新打开一个自定义 SQL 的页面
  • 帮助:打开帮助文档
3SQL执行区域
  • 可新建SQL查询,并提供 格式化、解释、清空代码、动态参数 的操作
  • 最多支持 5 条SQL查询同时运行
  • 单击 运行 后执行查询语句并获取查询结果
4执行结果区域
  • 查询结果:执行SQL后可以查看执行结果,同时支持 1000条 的数据预览,支持Excel、CSV格式下载。
  • 查询记录:支持插入历史执行过的SQL语句到SQL编辑器内;支持查看历史执行的SQL语句和执行结果;支持状态为查询成功的最近100条SQL语句的执行结果下载


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. 使用说明

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


6.3. 跨项目查询

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

注释:

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

6.3.1. 场景举例

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

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

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

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

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

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
SQL
  • 利用 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()
SQL
    • 例如:查看在「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
SQL


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中使用该表