Apache Superset 是一款开源的现代数据探索和可视化平台,具有快速、轻量级、直观的特点,并且提供多种的能力,使不同用户都能够轻松探索和可视化数据。Apache Superset 目前最新的版本是 2.0.0,除了能像之前的版本一样,能够接入绝大多数常见的数据源,还内置了部分 Apache ECharts 图表,并且提供了数据看板认证的功能。
本文提供一个指标体系建设的示例来说明,如何在 Superset 上创建一个数据口径一致的自助数据看板。通过这个示例,不仅可以了解到基础指标、派生指标、修饰类型、修饰词、时间周期等概念,还能够了解如何在 Superset 上创建一个口径统一的指标看板。
创建指标体系示例
1.使用和查看数据源数据
superset.birth_names 这张表中包含 7 个字段:分别是:ds、gender、name、num、state、num_boys、num_girls。
2.指标体系示例
使用上述数据表搭建一套简单的指标体系示例,来说明:基础指标、派生指标、修饰词、时间周期、维度、度量等概念。
3.创建基础指标
指标的创建需要根据业务场景来制定的,制定好的指标要为业务服务。
这里我们以 出生取名字 这个 业务过程 为例,来制定一个 出生人数 的指标,该指标要支持在 年份、性别、姓名、地区 这 4 个维度上进行下钻分析。
按照这个指标需求,可以定义以下基础指标的技术口径(SQL):
-- 基础指标:出生人数
SELECT ds AS '年份',
gender '性别',
name AS '姓名',
STATE AS '地区',
sum(num) AS '人数'
FROM superset.birth_names
GROUP BY ds,
gender,
name,
STATE;
4.创建派生指标
- 单维度派生指标:出生地为“CA”的出生人数。该指标的修饰类型为:地区;修饰词为:CA。
-- 单维度派生指标:出生地为“CA”的出生人数
-- 按照地区下钻
SELECT DATE(`年份`) AS `年份`,
`地区` AS `地区`,
`性别` AS `性别`,
`姓名` AS `姓名`,
sum(`人数`) AS `SUM(人数)`
FROM
(SELECT ds AS '年份',
gender '性别',
name AS '姓名',
STATE AS '地区',
sum(num) AS '人数'
FROM superset.birth_names
GROUP BY ds,
gender,
name,
STATE) AS virtual_table
WHERE `地区` IN ('CA')
GROUP BY DATE(`年份`),
`地区`,
`性别`,
`姓名`;
- 双维度派生指标:出生地为“CA”、姓名为“James”的出生人数。该指标的修饰类型为:地区的修饰词为:修饰词为:CA;修饰类型为:姓名的修饰词为:James。
-- 双维度派生指标:出生地为“CA”、名字为“James”的出生人数
-- 按照 地区/名字 下钻
SELECT DATE(`年份`) AS `年份`,
`地区` AS `地区`,
`性别` AS `性别`,
`姓名` AS `姓名`,
sum(`人数`) AS `SUM(人数)`
FROM
(SELECT ds AS '年份',
gender '性别',
name AS '姓名',
STATE AS '地区',
sum(num) AS '人数'
FROM superset.birth_names
GROUP BY ds,
gender,
name,
STATE) AS virtual_table
WHERE `地区` IN ('CA')
AND `姓名` IN ('James')
GROUP BY DATE(`年份`),
`地区`,
`性别`,
`姓名`;
- 时间维度派生指标:2006-2008年、出生地为“CA”、名字为“James”的出生人数。该指标在上面的双维度派生指标的基础上,增加了时间周期:2006年 - 2008年期间。
-- 时间维度派生指标:2006-2008年、出生地为“CA”、名字为“James”的出生人数
-- 按照 时间/地区/名字 下钻
SELECT DATE(`年份`) AS `年份`,
`地区` AS `地区`,
`性别` AS `性别`,
`姓名` AS `姓名`,
sum(`人数`) AS `SUM(人数)`
FROM
(SELECT ds AS '年份',
gender '性别',
name AS '姓名',
STATE AS '地区',
sum(num) AS '人数'
FROM superset.birth_names
GROUP BY ds,
gender,
name,
STATE) AS virtual_table
WHERE `年份` IN (STR_TO_DATE('2006-01-01 00:00:00.000000', '%Y-%m-%d %H:%i:%s.%f'),
STR_TO_DATE('2007-01-01 00:00:00.000000', '%Y-%m-%d %H:%i:%s.%f'),
STR_TO_DATE('2008-01-01 00:00:00.000000', '%Y-%m-%d %H:%i:%s.%f'))
AND `地区` IN ('CA')
AND `姓名` IN ('James')
GROUP BY DATE(`年份`),
`地区`,
`性别`,
`姓名`;
至此,我们创建了 1 个基础指标,3 个派生指标。由于 3 个派生指标是由同 1 个基础指标派生而来,能够保证指标的数据口径是一致的。
在 Superset 中制作自助报表
1.创建数据集
打开 Superset -> SQL 工具箱 -> SQL Editor ,使用上述基础指标的 SQL,SAVE AS 一个名为 metrics_birth_names 的数据集。数据集创建好之后,可以在 数据 -> 数据集 中找到。
2.制作图表
使用上述创建好的数据集,创建一张数据表类型的图标。将左侧的数据列中依次拖入中间部分的 维度 和 指标 框中,点击 CREATE CHART,生成数据表。
在生成的图表中,点击右上角的 View query,查看图标对应的 SQL ,验证图表的 SQL 与基础指标的 SQL 基本一致。
使用相同的数据集和步骤,创建其它类型的图表。
3.制作指标看板
将制作好的图表拖到同一张指标看板中。
4.验证和发布指标看板
指标数据看板上,每张图表的右上角都有 View query 菜单,通过点击该菜单来验证每张图表的数据口径。
指标看板上图表的口径验证完之后,标识成已认证,并正式发布。
总结
本文基于 Superset 2.0 自带的数据集,定义了一套 出生取名字 的指标体系示例,包括 1 个基础指标,3 个派生指标。通过这套指标体系,创建了 Superset 的图标和看板,并且演示了如何验证图表的以及看板的数据口径。数据口径验证无误之后,认证并发布自助指标看板。