天天看點

基于開源可視化資料探索平台 Superset 的名額體系建設

作者:資料築夢空間

Apache Superset 是一款開源的現代資料探索和可視化平台,具有快速、輕量級、直覺的特點,并且提供多種的能力,使不同使用者都能夠輕松探索和可視化資料。Apache Superset 目前最新的版本是 2.0.0,除了能像之前的版本一樣,能夠接入絕大多數常見的資料源,還内置了部分 Apache ECharts 圖表,并且提供了資料看闆認證的功能。

本文提供一個名額體系建設的示例來說明,如何在 Superset 上建立一個資料口徑一緻的自助資料看闆。通過這個示例,不僅可以了解到基礎名額、派生名額、修飾類型、修飾詞、時間周期等概念,還能夠了解如何在 Superset 上建立一個口徑統一的名額看闆。

基于開源可視化資料探索平台 Superset 的名額體系建設

建立名額體系示例

1.使用和檢視資料源資料

基于開源可視化資料探索平台 Superset 的名額體系建設

superset.birth_names 這張表中包含 7 個字段:分别是:ds、gender、name、num、state、num_boys、num_girls。

2.名額體系示例

使用上述資料表搭建一套簡單的名額體系示例,來說明:基礎名額、派生名額、修飾詞、時間周期、次元、度量等概念。

基于開源可視化資料探索平台 Superset 的名額體系建設

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 的名額體系建設

打開 Superset -> SQL 工具箱 -> SQL Editor ,使用上述基礎名額的 SQL,SAVE AS 一個名為 metrics_birth_names 的資料集。資料集建立好之後,可以在 資料 -> 資料集 中找到。

基于開源可視化資料探索平台 Superset 的名額體系建設

2.制作圖表

使用上述建立好的資料集,建立一張資料表類型的圖示。将左側的資料列中依次拖入中間部分的 次元 和 名額 框中,點選 CREATE CHART,生成資料表。

基于開源可視化資料探索平台 Superset 的名額體系建設

在生成的圖表中,點選右上角的 View query,檢視圖示對應的 SQL ,驗證圖表的 SQL 與基礎名額的 SQL 基本一緻。

基于開源可視化資料探索平台 Superset 的名額體系建設

使用相同的資料集和步驟,建立其它類型的圖表。

3.制作名額看闆

将制作好的圖表拖到同一張名額看闆中。

基于開源可視化資料探索平台 Superset 的名額體系建設

4.驗證和釋出名額看闆

名額資料看闆上,每張圖表的右上角都有 View query 菜單,通過點選該菜單來驗證每張圖表的資料口徑。

基于開源可視化資料探索平台 Superset 的名額體系建設

名額看闆上圖表的口徑驗證完之後,辨別成已認證,并正式釋出。

基于開源可視化資料探索平台 Superset 的名額體系建設
基于開源可視化資料探索平台 Superset 的名額體系建設

總結

本文基于 Superset 2.0 自帶的資料集,定義了一套 出生取名字 的名額體系示例,包括 1 個基礎名額,3 個派生名額。通過這套名額體系,建立了 Superset 的圖示和看闆,并且示範了如何驗證圖表的以及看闆的資料口徑。資料口徑驗證無誤之後,認證并釋出自助名額看闆。

繼續閱讀