主题
SQL分析
涌现平台采用 Trino 查询引擎,支持您直接编写 SQL 查询语句,灵活获取项目中的所有数据,满足高度定制化、复杂场景下的数据分析需求。
核心价值
- 解决复杂的数据分析需求,突破可视化模型的限制。
- 支持以下关键能力:
- 跨项目数据整合:如合并新服与老服数据进行对比分析。
- 自定义计算指标:构建专属指标,如玩家战力成长曲线、复合LTV模型。
- 深度用户分群:精准圈定复杂条件人群,如“连续3天未登录的高价值付费玩家”。
业务场景示例
✅ 场景一:今日新增
sql
/* 今日新增 */
SELECT event_name,
SUM(CASE
WHEN dates = '合计' THEN "#_nums"
ELSE 0
END) AS "summary@nums",
SUM(CASE
WHEN dates = '2025-08-05' THEN "#_nums"
ELSE 0
END) AS "2025-08-05"
FROM (
(SELECT dates,
"#_event_name" AS event_name,
count(DISTINCT ys_system_id) AS "#_nums"
FROM
(SELECT a.*,
init_part_date AS dates,
'新增玩家' AS "#_event_name"
FROM
(SELECT *
FROM bidata.ve_1009 AS a) AS a
WHERE 1=1
AND a.init_part_event = 'event_createrole_begin'
AND init_part_date >= '2025-08-05'
AND init_part_date <= '2025-08-05' ) AS a
GROUP BY dates,
"#_event_name"
ORDER BY dates ASC,"#_event_name" ASC))
GROUP BY event_name
ORDER BY event_name ASC
✅ 场景二:活跃留存
sql
/* 活跃留存 */
WITH base AS (
SELECT DISTINCT DATE(init_part_date) AS init_part_date, father_account_id
FROM ve_82
WHERE DATE(init_part_date) BETWEEN date_add('day', -6, current_date) AND current_date
and ys_event_name = 'server_log_in'
),
retention AS (
SELECT
b1.init_part_date AS cohort_date,
b1.father_account_id,
MAX(CASE WHEN DATE(b2.init_part_date) = date_add('day', 1, b1.init_part_date) THEN 1 ELSE 0 END) AS D1_active,
MAX(CASE WHEN DATE(b2.init_part_date) = date_add('day', 2, b1.init_part_date) THEN 1 ELSE 0 END) AS D2_active,
MAX(CASE WHEN DATE(b2.init_part_date) = date_add('day', 3, b1.init_part_date) THEN 1 ELSE 0 END) AS D3_active,
MAX(CASE WHEN DATE(b2.init_part_date) = date_add('day', 4, b1.init_part_date) THEN 1 ELSE 0 END) AS D4_active,
MAX(CASE WHEN DATE(b2.init_part_date) = date_add('day', 5, b1.init_part_date) THEN 1 ELSE 0 END) AS D5_active,
MAX(CASE WHEN DATE(b2.init_part_date) = date_add('day', 6, b1.init_part_date) THEN 1 ELSE 0 END) AS D6_active,
MAX(CASE WHEN DATE(b2.init_part_date) = date_add('day', 7, b1.init_part_date) THEN 1 ELSE 0 END) AS D7_active
FROM base b1
LEFT JOIN ve_82 b2
ON b1.father_account_id = b2.father_account_id
AND DATE(b2.init_part_date) BETWEEN date_add('day', 1, b1.init_part_date) AND date_add('day', 7, b1.init_part_date)
and ys_event_name = 'server_log_in'
GROUP BY b1.init_part_date, b1.father_account_id
)
SELECT
cast("cohort_date" AS varchar) "日期",
COUNT(father_account_id) AS "活跃人数",
CONCAT(cast(ROUND(SUM(D1_active) * 100.0 / COUNT(father_account_id), 2) as varchar), '%') AS "次留",
CONCAT(cast(ROUND(SUM(D2_active) * 100.0 / COUNT(father_account_id), 2)as varchar), '%') AS "三留",
CONCAT(cast(ROUND(SUM(D3_active) * 100.0 / COUNT(father_account_id), 2)as varchar), '%') AS "四留",
CONCAT(cast(ROUND(SUM(D4_active) * 100.0 / COUNT(father_account_id), 2)as varchar), '%') AS "五留",
CONCAT(cast(ROUND(SUM(D5_active) * 100.0 / COUNT(father_account_id), 2)as varchar), '%') AS "六留",
CONCAT(cast(ROUND(SUM(D6_active) * 100.0 / COUNT(father_account_id), 2)as varchar), '%') AS "七留"
FROM retention
GROUP BY cohort_date
ORDER BY cohort_date DESC
在编写时需要注意下面几点:
- 字段名请使用双引号 " " 括起,也可以缺省,但如果您查询的字段名带有特殊符号(如$、#),则必须使用双引号
- 字符串请必须使用单引号 ' '括起
- 可以使用SELECT语句以及WITH子句
- 在编写查询语句的过程中,您可以参考“表结构”中信息,复制表名或者表内的字段名,您也可以通过“表解析”自动将包含所有字段的查询语句插入到输入框内。
您也可以将当前语句输入框中的内容保存为书签,避免未编写完成的内容丢失,已保存的书签可以在“语句书签”中找到。 如果您需要在查询语句中使用动态时间,或者希望其他成员可以动态调整查询语句中部分内容,可以通过添加 动态参数 实现。
查看查询结果并保存为报表/标签等
点击“计算”按钮后,您可以查看本次SQL语句的运行结果,最多展示1000行明细数据,如需查看全量数据请下载CSV文件,最大支持100万行数据。您也可以将本次查询结果保存为“临时表”,临时表可以在后续查询中使用。
除了直接查看数据明细,您也可以通过可视化模块中提供的折线图、饼状图等多种图表类型展示数据,您还可以将当前查询语句以及可视化配置保存为报表,并共享给其他成员。