視覺化時間序列的最佳實務

在同一個儀表板上組織時間序列圖表,述說故事。

我們將檢視在兩個不同時間段之間比較指標的不同策略,例如將本週與上週進行比較,或將去年與前一年進行比較。我們將使用 Metabase 隨附的範例資料庫,以便您可以跟著操作。此範例資料庫包含一家從 2015 年到 2020 年存在的完全真實、並非虛構公司的訂單資訊。為了展現我們的查詢產生器技能,我們對 2018 年與 2019 年下的訂單進行比較感興趣。

本文以先前關於時間序列比較的文章為基礎,但在此我們涵蓋兩種不同的策略

在儀表板上並排比較時間段

A dashboard with two columns, Date 1 on the left, Date 2 on the right, each with cards connected to their respective filter widget. A third widget is connected to cards in both columns to filter for product category.

此模式易於維護且易於擴充(透過修改卡片或新增卡片),而且當您想要比較多個指標時特別有用。

這裡的第一步是提出問題。對於我們的資料,我們將選取 Orders 表格。我們將摘要訂單計數,並依月份群組。然後我們將問題儲存為「每月訂單數」。

Notebook view of our question that summarizes the count of orders grouped by month

接下來,我們會將我們的「每月訂單數」問題新增至新的儀表板,並將該儀表板命名為「並排比較」或其他名稱。然後我們會再次將相同的問題「每月訂單數」新增至儀表板(也就是作為第二張卡片),我們將其放置在原始問題的右側。

我們在這裡做的是在儀表板中建立兩個欄:左欄將有一個日期範圍,而右欄將有第二個日期範圍。我們將附加篩選器以控制左欄卡片的日期範圍,以及另一個將控制右欄日期範圍的篩選器。

我們將為每個篩選器設定預設日期範圍,使用「介於」選項(您可以輸入日期,而不是按一下日曆)。

  • 日期 1 範圍:01/01/201812/31/2018
  • 日期 2 範圍:01/01/201912/31/2019

Attaching the Date 1 filter to each card on the left column (but not the right column).

儲存您的變更,並重新整理頁面以更新結果。我們也可以將其他篩選器附加到儀表板,我們可以將其連接到兩個欄中的卡片,例如,如果我們想要依特定類別篩選訂單。

您可以新增其他具有時間序列的卡片,並將它們連接到該欄的對應篩選器。

並排比較的提示

請記住,當在手機上檢視時,此模式會失效,因為 Metabase 會將每張卡片摺疊成單一欄。您仍然可以理解儀表板的意義,但這需要您仔細查看每張卡片的日期。

每個欄都使用相同的問題

這樣,如果您想要修改問題,您只需要更新一個問題,兩個欄都會取得更新。

確保兩個卡片之間的軸線相同

Metabase 預設為自動調整 y 軸以考量值,但如果一張卡片的上限為 500,而另一張卡片的上限為 1000,則可能會難以看出兩張卡片之間的差異。在儀表板編輯模式中,將滑鼠游標停留在卡片上方,然後按一下調色盤圖示以編輯視覺化設定。按一下軸線標籤,關閉自動 y 軸範圍,並設定 y 軸最大值(您應該將最小值保留為 0)。

Setting the y-axis Max value to 600.

使用目標線和/或趨勢線

新增線條可以讓人員更容易區分圖表之間的指標效能。很明顯,2019 年的訂單超出目標的次數比 2018 年多。

為了讓人員更容易理解分割設定,我們可以新增文字卡片,表示每個欄對應其中一個篩選器:左欄對應日期 1,右欄對應日期 2。在儀表板編輯模式中,您可以透過將滑鼠游標停留在卡片上方並按一下調色盤圖示,來編輯文字卡片的視覺化設定。例如,對於具有 ## Date 1 的卡片,我們已將垂直對齊設定為「頂端」,將水平對齊設定為「置中」,並關閉顯示背景設定。

使用色彩區分欄

您可以使用不同的色彩來區分每個欄中的卡片。將滑鼠游標停留在卡片上方,然後按一下調色盤圖示以更新卡片的視覺化設定。

如需儀表板的更多提示,請查看BI 儀表板最佳實務

在同一個圖表上覆蓋兩個時間序列

現在進入從根本上不同的方法。在這裡,我們將涵蓋兩種模式

使用自訂欄來群組靜態日期範圍

在這裡,我們將使用 case 陳述式來建立自訂欄。我們可以使用 between 運算式。在這裡,我們將使用自訂運算式建立新的欄。

case(between([Created At], "2018-01-01", "2018-12-31"), "2018", between([Created At], "2019-01-01", "2019-12-31"), "2019")

此運算式表示的是,對於結果中的每筆記錄(列),新增一個新的欄。如果 Created At 欄位介於 2018 年 1 月 1 日和 2018 年 12 月 31 日之間,則將值「2018」放入該記錄的 Year 欄中。如果 Created At 日期落在 2019 年的範圍之間,則改為放入「2019」。否則,將其留空。接下來,我們要篩選我們建立的「Year」欄不為空的所有記錄。

The query builder contains a custom column called year, filters out years that are empty, and counts the orders, and groups by year and Created at by month of year.

在這裡,我們在同一個圖表上有兩個時間序列:2018 年與 2019 年

Two time series on the same chart.

您也可以將其視覺化為長條圖

The same series, but as bar chart.

現在,如果您想要比較相對於目前日期的日期,您可以使用 interval 函數在 case 陳述式中,但接下來我們將涵蓋 interval 的不同使用案例。

使用自訂運算式比較上週與前一週

我們已在先前關於 時間序列比較 CountIf 彙總和 between 函數的文章中,涵蓋了一種比較時間段的方法。這次我們將使用 interval 函數,它可讓我們指定相對於目前日期的持續時間。

範例資料庫只有到 2020 年的資料(不確定公司發生了什麼事),因此您需要自行在您的資料上試用,但以下是其運作方式

Orders 表格作為我們的起始資料,我們將新增兩個摘要(指標)。在摘要區段中,我們將使用自訂運算式定義一個摘要,我們將其命名為「上週」

CountIf(interval([Created At], -1, "week"))

在間隔用語中,0 表示本週,因此我們寫入 -1,僅在該列的 Created At 是上週的日期時才計算訂單。我們也可以將「week」變更為「day」、「month」、「year」或其他間隔;請查看您資料庫的文件,以查看它支援哪些間隔。

接下來,我們將為「前一週」定義第二個摘要。

CountIf(interval([Created At], -2, "week") AND NOT interval([Created At], -1, "week"))

在這裡,我們表示僅計算前兩週的所有訂單,除了 (AND NOT) 上週的訂單。

最後,我們需要群組摘要。由於我們想要查看上週一與前一週一的績效比較(以及每週的其他每一天),因此我們會想要依星期幾群組 Created At

延伸閱讀