Power BI Desktop での日付テーブルの設計ガイダンス
この記事は、Power BI Desktop の使用時にデータ モデルで日付テーブルを作成する際に推奨される設計方法について説明します。
日付テーブルは、分析に使用される最も一般的なテーブルです。 日付ごとに 1 行を格納し、年、四半期、月などの特定の期間でフィルター処理またはグループ化する一般的な要件をサポートします。
さらに、データ分析式 (DAX) タイム インテリジェンス関数を使用するにはデータ モデルに少なくとも 1 つの 日付テーブルが必要です。 日付テーブルは、次の要件を満たすモデル テーブルです。
- "日付列" と呼ばれるデータ型 date (または date/time ) の列が必要です。
- 日付列には一意の値が含まれている必要があります。
- 日付列に空白を含めることはできません。
- 日付列に欠落している日付があってはなりません。
- 日付列は年間全体にわたっている必要があります。 1 年は必ずしも暦年 (1 月から 12 月) ではありません。
- 日付テーブルには日付テーブルとしてマークされている必要があります。
モデルに日付テーブルを追加するには、次のいずれかの手法を使用できます。
- 自動日付/時刻を使用する
- Power Query を使用して接続する (既存の日付ディメンション テーブルに)
- Power Query を使用して生成する
- DAX を使用して生成する
- DAX を使用して複製する
ヒント
日付テーブルは、データ モデルに追加する最も一貫性のある機能である可能性があります。 組織内では、日付テーブルを一貫して定義する必要があります。 そのため、どの方法を使用する場合でも、完全に構成された日付テーブルを含む Power BI Desktop テンプレートを作成することをお勧めします。 組織内のすべてのデータ モデリング担当者とテンプレートを共有します。 そのため、誰かが新しいデータ モデルを開発するたびに、一貫して定義された日付テーブルから始めることができます。
[自動の日付/時刻] を使用する
[自動の日付/時刻] オプションによって、便利かつ高速で使いやすいタイム インテリジェンスが提供されます。 レポート作成者は、カレンダー期間を使用してフィルター処理、グループ化、およびドリルダウンを行うときにタイム インテリジェンスを操作できます。
[自動の日付/時刻] オプションは、カレンダー期間を操作する場合と、時間に関して単純なモデル要件がある場合にのみ有効にすることをお勧めします。 このオプションは、アドホック モデルを作成するとき、またはデータ探索またはプロファイリングを実行するときにも使用できます。 ただし、この方法では、フィルターを複数のテーブルに伝達できる 1 つの日付テーブル デザインはサポートされていません。 詳細については、「Power BI Desktop での自動の日付/時刻のガイダンス」を参照してください。
Power Query を使用して接続する
データ ソースに既に日付テーブルがある場合は、それをモデルの日付テーブルのソースとして使用することをお勧めします。 通常、データ ウェアハウスに接続する場合は、既に 日付ディメンション テーブルが必要です。 これにより、モデルは組織内の時間に対して単一の信頼のソースを使用します。
DirectQuery モデルを開発していて、データ ソースに日付テーブルが含まれていない場合は、データ ソースに日付テーブルを追加することを強くお勧めします。 日付テーブルのすべてのモデリング要件を満たす必要があります。 これで Power Query を使用して日付テーブルに接続できるようになります。 これにより、モデルの計算で DAX タイム インテリジェンス機能を使用できます。
Power Query を使用して生成する
Power Query を使用して日付テーブルを生成できます。 詳細については、Chris Webb のブログ エントリ「Power Query での日付ディメンション テーブルの生成」を参照してください。
ヒント
組織内にデータ ウェアハウスやその他の一貫した定義がない場合は、Power Query を使用してデータフローを発行することを検討します。 次に、すべてのデータ モデル管理者をデータフローに接続し、モデルに日付テーブルを追加します。 このデータフローは、組織内の時間に関する 1 つの信頼できる情報源になります。
日付テーブルを生成する必要がある場合は、DAX を使用して実行することを検討してください。 場合によっては、より簡単と思われるかもしれません。 さらに、DAX には日付テーブルの作成と管理を簡素化する組み込みのインテリジェンスが組み込まれているため、より便利になる可能性があります。
DAX を使用して生成する
モデルで日付テーブルを生成するには、CALENDAR または
- 日付範囲を定義する場合は、
CALENDAR
関数を使用します。 開始日と終了日の 2 つの値を渡します。 これらの値は、MIN(Sales[OrderDate])
やMAX(Sales[OrderDate])
などの他の DAX 関数で定義できます。 - モデルに格納されているすべての日付を日付範囲に自動的に含める場合は、
CALENDARAUTO
関数を使用します。 年の最終月である 1 つの省略可能なパラメーターを渡すことができます (年が 12 月に終わる暦年の場合、値を渡す必要はありません)。 完全な年数の日付が確実に返され、マークされた日付テーブルの要件を満たすので、便利な関数です。 さらに、将来の年の間、テーブルを行で拡張する必要はありません。 これは、データ更新が完了すると、テーブルの再計算がトリガーされるためです。 再計算により、新しい年の日付がモデルに読み込まれるときに、テーブルの日付範囲が自動的に拡張されます。
ヒント
日付テーブルの作成方法の例など、計算テーブルの作成の詳細については、「Power BI Desktop モデルに計算テーブルと計算列を追加する」学習モジュールを行ってください。
また、無料のオープンソース ツールを使用して、DAX で日付を管理することを検討してください。 詳細については、「 Bravo for Power BI」を参照してください。
DAX を使用して複製する
データ モデルに既に日付テーブルがあり、別の日付テーブルが必要な場合(日付が ロールプレイング ディメンションである場合 ディメンションでは、既存の日付テーブルを簡単に複製できます。 計算テーブルを作成することで、テーブルを複製できます。 計算テーブル式は、単に既存の日付テーブルの名前です。
たとえば、Date
テーブルを複製するShip Date
テーブルを作成するには、次の計算テーブル式を使用します。
Ship Date = 'Date'
Note
DAX を使用してテーブルを複製すると、列のみが作成されます。 複製されたテーブルのモデル プロパティ (形式や説明など) は適用されません。 また、階層は複製されません。
関連するコンテンツ
この記事に関する詳細については、次のリソースを参照してください。