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 的圖示和看闆,并且示範了如何驗證圖表的以及看闆的資料口徑。資料口徑驗證無誤之後,認證并釋出自助名額看闆。