跳至主要內容
在 GitHub 上編輯此頁面

在 Superset 中探索資料

在本教學中,我們將透過探索一個真實的資料集來介紹 Apache Superset 中的關鍵概念,該資料集包含一家英國組織員工在 2011 年的航班記錄。以下是關於每個航班的資訊:

  • 旅客的部門。在本教學中,各部門已重新命名為橘色、黃色和紫色。
  • 機票的費用。
  • 艙等(經濟艙、豪華經濟艙、商務艙和頭等艙)。
  • 機票是單程還是來回。
  • 旅行日期。
  • 關於起點和終點的資訊。
  • 起點和終點之間的距離,以公里(km)為單位。

啟用資料上傳功能

您可能需要啟用將 CSV 或 Excel 檔案上傳到資料庫的功能。以下章節說明如何為範例資料庫啟用此功能。

在頂部選單中,選擇「資料 ‣ 資料庫」。在清單中找到 examples 資料庫,然後選擇「編輯」按鈕。

在彈出的對話視窗中,切換到「額外」標籤,並勾選「允許資料上傳」的核取方塊。最後按一下「儲存」按鈕。

載入 CSV 資料

GitHub 將 CSV 資料集下載到您的電腦。在 Superset 選單中,選擇「資料 ‣ 上傳 CSV」。

然後,將「表格名稱」輸入為 *tutorial_flights*,並從您的電腦中選擇 CSV 檔案。

接下來,在「解析日期」欄位中輸入文字 *Travel Date*。

保留所有其他選項的預設設定,在頁面底部選擇「儲存」。

表格視覺化

您現在應該會在「資料集」標籤中看到 *tutorial_flights* 作為一個資料集。按一下該項目以啟動使用此資料集的「探索」工作流程。

在本節中,我們將建立一個表格視覺化,以顯示每個艙等的航班數量和費用。

依預設,Apache Superset 只會顯示最近一週的資料。在我們的範例中,我們想要視覺化資料集中的所有資料。按一下「時間 ‣ 時間範圍」區段,並將「範圍類型」變更為「無篩選器」。

按一下「套用」以儲存。

現在,我們想要使用「分組依據」選項來指定表格中的列。由於在本範例中,我們想要了解不同的艙等,因此我們在此選單中選擇「艙等」。

接下來,我們可以使用「度量」選項來指定我們想要在表格中看到的度量。

  • COUNT(*),表示表格中的列數(在本例中,為每個艙等的航班數量)
  • SUM(Cost),表示每個艙等花費的總費用

最後,選擇「執行查詢」以查看表格的結果。

若要儲存視覺化,請按一下螢幕左上角的「儲存」。在彈出的對話視窗中,

  • 選擇「另存為」選項,並將圖表名稱輸入為「Tutorial Table」(您可以透過頂部選單中「圖表」畫面再次找到它)。
  • 選擇「新增至儀表板」並輸入「Tutorial Dashboard」。最後,選擇「儲存並前往儀表板」。

儀表板基礎知識

接下來,我們將探索儀表板介面。如果您已完成上一節,您應該已經開啟儀表板。否則,您可以透過在頂部選單中選擇「儀表板」,然後從儀表板清單中選擇「Tutorial dashboard」來導覽至儀表板。

在此儀表板上,您應該會看到您在上一節中建立的表格。選擇「編輯儀表板」,然後將滑鼠游標懸停在表格上。透過選擇表格的右下角(游標也會改變),您可以透過拖放來調整其大小。

最後,透過選擇右上角的「儲存變更」來儲存您的變更。

樞紐分析表

在本節中,我們將使用更複雜的視覺化「樞紐分析表」來擴展我們的分析。在本節結束時,您將建立一個表格,顯示前六個月每個部門每個艙等的每月航班費用。

透過選擇右上角的「+ ‣ 圖表」來建立新的圖表。再次選擇 tutorial_flights 作為資料來源,然後按一下視覺化類型以進入視覺化選單。選擇「樞紐分析表」視覺化(您可以透過在搜尋框中輸入文字來篩選),然後選擇「建立新圖表」。

在「時間」區段中,保留「時間欄位」為「旅行日期」(這會自動選取,因為我們的資料集中只有一個時間欄位)。然後選擇「時間粒度」為「月份」,因為每日資料過於細微,無法看出模式。然後,透過按一下「時間範圍」區段中的「上週」,然後在「自訂」中,分別選擇「2011 年 1 月 1 日」和「2011 年 6 月 30 日」的開始/結束時間,來選擇 2011 年前六個月的時間範圍,您可以直接輸入日期或使用日曆小工具(透過選擇月份名稱和年份,您可以更快地移動到較遠的日期)。

接下來,在「查詢」區段中,移除預設的 COUNT(*),並新增「費用」,保留預設的 SUM 彙總。請注意,Apache Superset 將會透過清單左手欄的符號來指示度量的類型(字串為 ABC、數字為 #、時間為時鐘面等)。

在「分組依據」中,選擇「時間」:這會自動使用我們在「時間」區段中定義的「時間欄位」和「時間粒度」選取項目。

在「欄位」中,先選擇「部門」,然後選擇「艙等」。全部設定完成 – 讓我們「執行查詢」來查看一些資料!

您應該會在列中看到月份,而在欄中看到部門和艙等。將此圖表發佈到您先前建立的現有「Tutorial Dashboard」。

折線圖

在本節中,我們將建立一個折線圖,以了解整個資料集中每月機票的平均價格。

在「時間」區段中,與之前相同,保留「時間欄位」為「旅行日期」,「時間粒度」為「月份」,但這次「時間範圍」選取「無篩選器」,因為我們想要查看整個資料集。

在「度量」中,移除預設的 COUNT(*) 度量,並改為新增 AVG(Cost),以顯示平均值。

接下來,選擇「執行查詢」以在圖表上顯示資料。

看起來如何?嗯,我們可以發現 12 月的平均費用會上升。然而,將單程和來回機票合併可能沒有意義,最好為每種類型的機票顯示兩條不同的線。

讓我們在「分組依據」框中選取「機票單程或來回」,然後再次選取「執行查詢」來執行此操作。太棒了!我們可以發現單程機票的平均價格比來回機票便宜,而且 12 月的大幅上升是由於來回機票所造成的。

我們的圖表看起來已經相當不錯了,但讓我們透過前往左手窗格的「自訂」標籤來進行更多自訂。在此窗格中,試著變更「色彩配置」,透過在「顯示範圍篩選器」下拉式選單中選取「否」來移除範圍篩選器,並使用「X 軸標籤」和「Y 軸標籤」新增一些標籤。

完成後,將圖表發佈到您的「Tutorial Dashboard」中。

標記

在本節中,我們將在儀表板中新增一些文字。如果您已經在儀表板中,您可以透過在頂部選單中選擇「儀表板」,然後從儀表板清單中選擇「Tutorial dashboard」來導覽至儀表板。透過選取「編輯儀表板」進入編輯模式。

在「插入元件」窗格中,將「Markdown」方塊拖放到儀表板上。尋找藍色線條,這表示方塊將放置的位置。

現在,若要編輯文字,請選取方塊。您可以輸入文字,並使用 Markdown 格式(如需有關此格式的更多資訊,請參閱此 Markdown 小抄)。您可以使用方塊頂部的選單在「編輯」和「預覽」之間切換。

若要退出,請選取儀表板的任何其他部分。最後,別忘了使用「儲存變更」來儲存您的變更。

發佈您的儀表板

如果您已依照上一節中概述的所有步驟進行操作,您應該會看到一個如下所示的儀表板。如果您願意,可以透過選取「編輯儀表板」並拖放來重新排列儀表板的元素。

如果您想要讓您的儀表板可供其他使用者使用,只需選取儀表板標題左側的「草稿」,即可將您的儀表板變更為「已發佈」狀態。您也可以透過選取星號來將此儀表板設為我的最愛。

註解

註解可讓您為圖表新增額外的情境。在本節中,我們將為上一節中建立的「教學折線圖」新增一個註解。具體而言,我們將新增英國民航局因冰島 Grímsvötn 火山爆發而取消某些航班的日期(2011 年 5 月 23 日至 25 日)。

首先,透過導覽至「管理 ‣ 註解圖層」來新增註解圖層。透過選取綠色加號來新增記錄,以新增新的註解圖層。輸入名稱「火山爆發」並儲存。我們可以使用此圖層來參考許多不同的註解。

接下來,前往「管理」‣「註解」,然後選擇綠色加號來建立新的註解。接著,選擇「火山爆發」圖層,加入簡短描述「Grímsvötn」以及爆發日期(2011 年 5 月 23-25 日),最後儲存。

然後,前往折線圖,方法是點選「圖表」,然後從列表中選擇「教學折線圖」。接著,前往「註解與圖層」區段,然後選擇「新增註解圖層」。在這個對話框中

  • 將圖層命名為「火山爆發」
  • 將「註解圖層類型」變更為「事件」
  • 將「註解來源」設定為「Superset 註解」
  • 將「註解圖層」指定為「火山爆發」

選擇「套用」以查看圖表上顯示的註解。

如果需要,可以變更「顯示設定」區段中的設定來調整註解的外觀。否則,選擇「確定」,最後選擇「儲存」以儲存圖表。如果保留覆寫圖表的預設選項,註解會儲存到圖表中,並且也會自動顯示在教學儀表板中。

進階分析

在此章節中,我們將探索 Apache Superset 的進階分析功能,此功能可讓您對資料應用額外的轉換。三種類型的轉換為:

設定基礎圖表

在此章節中,我們要設定一個基礎圖表,然後我們可以對其套用不同的進階分析功能。首先,使用相同的tutorial_flights資料來源和折線圖視覺化類型來建立新的圖表。在「時間」區段中,將時間範圍設定為 2011 年 10 月 1 日至 2011 年 10 月 31 日。

接著,在查詢區段中,將「指標」變更為「成本」的總和。選擇「執行查詢」以顯示圖表。您應該會看到 2011 年 10 月每個月份的每日總成本。

最後,將視覺化效果儲存為「教學進階分析基礎」,並將其新增到教學儀表板中。

滾動平均

資料中存在相當大的變異,這使得很難識別任何趨勢。我們可以採取的一種方法是改為顯示時間序列的滾動平均值。若要執行此操作,請在進階分析的「移動平均」子區段中,於「滾動」方塊中選擇「平均值」,並在「期間」和「最小期間」中輸入 7。「期間」是以時間粒度的倍數表示的滾動期間長度。在我們的範例中,「時間粒度」是「天」,因此滾動期間是 7 天,使得在 2011 年 10 月 7 日顯示的值會對應於 2011 年 10 月的前七天。最後,透過將「最小期間」指定為 7,我們確保我們的平均值始終以 7 天計算,並避免任何上升期。

在選擇「執行查詢」顯示圖表後,您會看到資料的變異性較小,且由於排除上升期,因此序列開始時間較晚。

將圖表儲存為「教學滾動平均」,並將其新增到教學儀表板中。

時間比較

在此章節中,我們將時間序列中的值與前一週的值進行比較。首先開啟「教學進階分析基礎」圖表,方法是前往頂部選單中的「圖表」,然後從列表中選擇視覺化名稱(或者,在教學儀表板中找到圖表,然後從該視覺化效果的選單中選擇「探索圖表」)。

接下來,在進階分析的「時間比較」子區段中,輸入「時間位移」,方法是輸入「減 1 週」(請注意,此方塊接受自然語言輸入)。執行查詢以查看新圖表,該圖表具有相同的額外序列,時間向後偏移一週。

然後,將「計算類型」變更為「絕對差異」,然後選擇「執行查詢」。我們現在可以再次看到只有一個序列,這次顯示我們先前看到的兩個序列之間的差異。

將圖表儲存為「教學時間比較」,並將其新增到教學儀表板中。

重新取樣資料

在此章節中,我們將重新取樣資料,使其不再是每日資料,而是每週資料。如上一章節所述,重新開啟「教學進階分析基礎」圖表。

接下來,在進階分析的「Python 函數」子區段中,在「規則」中輸入 7D,這對應於七天,並將「方法」設定為「中位數」,然後選擇「執行查詢」以顯示圖表。

請注意,現在我們每 7 天就有一個資料點。在我們的案例中,顯示的值對應於七個每日資料點中的中位數值。如需有關此區段中各種選項意義的詳細資訊,請參閱 Pandas 文件

最後,將您的圖表儲存為「教學重新取樣」,並將其新增到教學儀表板。前往教學儀表板以並排查看四個圖表,並比較不同的輸出。