在 Power BI Desktop 中建立日期資料表
本文說明使用 Power BI Desktop 時,在資料模型中建立日期資料表的良好設計做法。
若要使用 Data Analysis Expressions (DAX) 時間智慧函數,具有必要的模型需求:您的模型中至少必須有一個「日期資料表」。 日期資料表是符合下列需求的資料表:
- 其必須具有資料類型 [日期] (或 [日期/時間]) 的資料行,也稱為「日期資料行」。
- 日期資料行必須包含唯一值。
- 日期資料行不得包含空白。
- 日期資料行不得有日期遺漏。
- 日期資料行必須橫跨完整年度。 年度並非一定要是日曆年度 (1 月到 12 月)。
- 日期資料表必須標示為日期資料表。
您可以使用下列任何一種方法,將日期資料表加入至您的模型:
- 自動日期/時間選項
- 連線到日期維度資料表的 Power Query
- 產生日期資料表的 Power Query
- 產生日期資料表的 DAX
- 複製現有的資料庫的 DAX
提示
日期資料表可能是您要新增至任何模型中的最一致的功能。 此外,在組織內應一致地定義日期資料表。 因此,無論您決定使用哪一種技術,我們都建議您建立 Power BI Desktop 範本,其中包含完整設定的日期資料表。 將範本與您組織中的所有模組工具共用。 因此,每當有人開發新的模型時,就可以從一致定義的日期資料表開始。
使用自動日期/時間
[自動日期/時間] 選項能提供便利、快速且容易使用的時間智慧。 報表作者可以在對行事曆時間週期進行篩選、分組及向下鑽研時使用時間智慧。
我們建議您只在處理行事曆日期週期,以及具有與時間相關的簡單模型需求時,才將 [自動日期/時間] 選項保持開啟。 在您建立臨機操作模型或執行資料探索或分析時,使用此選項可能也會很方便。 不過,這種方法並不支援可將篩選條件傳播到多個資料表的單一日期資料表設計。 如需詳細資訊,請參閱 Power BI Desktop 中的自動日期/時間指導方針。
使用 Power Query 進行連線
當您的資料來源已經有日期資料表時,建議您將其作為模型日期資料表的來源使用。 當您連線到資料倉儲時通常是這種情況,因為其會有日期維度資料表。 如此一來,您的模型就會在您的組織中針對時間運用單一事實來源。
如果您正在開發 DirectQuery 模型,而您的資料來源未包含日期資料表,我們強烈建議您將日期資料表新增至資料來源。 其應該符合日期資料表的所有模型需求。 然後,您可以使用 Power Query 連線到日期資料表。 如此一來,您的模型計算就可以運用 DAX 時間智慧功能。
使用 Power Query 產生
您可以使用 Power Query 產生日期資料表。 如需詳細資訊,請參閱 Chris Webb 的部落格文章:在 Power Query 中產生日期維度資料表 \(英文\)。
提示
如果您的組織中沒有資料倉儲或其他一致的時間定義,請考慮使用 Power Query 來發佈資料流程。 然後,讓所有資料模組工具都連線到資料流程,以將日期資料表新增至其模型。 資料流程會成為組織中時間的單一事實來源。
如果您需要產生日期資料表,請考慮使用 DAX 來進行。 您可能會發現這樣比較容易。 此外,可能更方便,因為 DAX 包含一些內建的智慧功能,可簡化建立及管理日期資料表的工作。
使用 DAX 產生
您可以在模型中產生日期資料表,方法是使用 CALENDAR 或 CALENDARAUTO DAX 函式來建立導出資料表。 每個函式都會傳回日期的單欄資料表。 接著,您可以使用導出資料行來擴充導出資料表,以支援您的日期間隔篩選和群組需求。
- 當您想要定義日期範圍時,請使用 CALENDAR 函式。 您會傳入兩個值:開始日期和結束日期。 這些值可以由其他 DAX 函式 (例如
MIN(Sales[OrderDate])
或MAX(Sales[OrderDate])
) 來定義。 - 當您想要讓日期範圍自動包含儲存在模型中的所有日期時,請使用 CALENDARAUTO 函式。 您可以傳入單一選擇性參數,也就是年份的結束月份 (如果您的年份是日曆年度,其結束時間為十二月,您就不需要傳入值)。 這是很有用的函式,因為其可確保會傳回整年的日期,這是標示日期資料表的要求。 更重要的是,您不需要管將資料表擴充至未來幾年:資料重新整理完成時,會觸發資料表的重新計算。 當新年份的日期載入至模型時,重新計算會自動擴充資料表的日期範圍。
提示
如需建立計算資料表的詳細資訊 (包括如何建立日期資料表的範例),請完成將計算資料表和資料行新增至 Power BI Desktop 模型學習模組。
使用 DAX 複製
當您的模型已經有日期資料表,而且您需要額外的日期資料表時,您可以輕鬆地複製現有的日期資料表。 當日期為角色扮演維度時,情況就是這樣。 您可以藉由建立導出資料表來複製資料表。 導出資料表運算式就是現有日期資料表的名稱。
相關內容
如需本文的詳細資訊,請參閱下列資源: