Power BI Desktop 中日期數據表的設計指導方針
本文說明使用 Power BI Desktop 時,在資料模型中建立日期資料表的良好設計做法。
日期數據表是用於分析的最常見數據表。 它會為每個日期儲存一個資料列,並支援依特定日期段 (例如年、季度或月) 篩選或分組的常見需求。
此外,若要使用數據分析表達式 (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 管理日期。 如需詳細資訊,請參閱 適用於Power BI的 Bravo。
使用 DAX 複製
當您的數據模型已經有日期數據表,而您需要另一個 日期數據表時,當 date 是角色扮演維度 維度時,您可以輕鬆地複製現有的日期數據表。 您可以藉由建立導出資料表來複製資料表。 導出資料表運算式就是現有日期資料表的名稱。
例如,若要建立 Ship Date
複製數據表的 Date
數據表,請使用下列匯出數據表運算式。
Ship Date = 'Date'
注意
當您使用 DAX 複製資料表時,它只會建立數據行。 它不會套用複製數據表中的任何模型屬性,例如格式或描述。 此外,不會複製階層。
相關內容
如需本文的詳細資訊,請參閱下列資源: