ナレッジベース

複数の日付フィールドを組み合わせる


発行: 24 Apr 2017
最終修正日: 09 Apr 2024

ご質問

複数の日付フィールドを単一の軸または単一の日付ヘッダーに結合する方法。

たとえば、すべてのオーダーに [Order Date (オーダー日)] と [Ship Date (出荷日)] があります。最終的な目標は、各月の発注済みおよび出荷済みのオーダー数を折れ線グラフかクロス集計のいずれかで表示することです。[Order Date (オーダー日)] が軸またはヘッダーとして使用されている場合、各月の出荷済みのオーダー数は正しくなりません。その逆も同様です。

環境

Tableau Desktop

回答

添付のワークブックの例では、"Superstore (スーパーストア)" サンプル データ セットを使用してすべてのオプションを示しています。
クリックしてソリューションを展開する
オプション 1: 日付フィールドのピボット処理
  1. 日付データが 1 つのフィールドにのみ含まれるように日付フィールドをピボット処理し、[Event (イベント)] のような 2 番目のフィールドではそのイベントが「発注済みのオーダー」なのか「出荷済みのオーダー」なのかを説明します。注: 一部のデータ ソースでは、Tableau Desktop で直接ピボット処理を実行できます。手順の詳細については、「ピボット データ ([列] から [行])」を参照してください。
  2. [Pivot Field Values (ピボットのフィールド値)] を右クリックして、[行] シェルフへドラッグします。
  3. [フィールドのドロップ] ダイアログで、[MY(Pivot Field Values) (MY(ピボットのフィールド値))] を選択して [OK] をクリックします。
  4. データ ペインの [Pivot Field Names (ピボットのフィールド名)] を右クリックして、[別名...] を選択します。
  5. [別名の編集] ダイアログで、[Order Date (オーダー日)] および [Ship Date (出荷日)] にわかりやすい別名を指定して、[OK] をクリックします。
  6. [Pivot Field Names (ピボットのフィールド名)] を [列] シェルフにドラッグします。
  7. [Order ID (オーダー ID)] を右クリックして、[マーク] カードの [テキスト] にドラッグします。
  8. [フィールドのドロップ] ダイアログで [CNTD(Order ID) (CNTD(オーダー ID))] を選択し、[OK] をクリックします。
クリックしてソリューションを展開する
オプション 2: LOD 計算の使用
このオプションでは、各日付フィールドにビューの各日付ビンに対するレコードを 1 つ以上指定する必要があります。この例では、各行が月を表すため、[Order Date (オーダー日)] と [Ship Date (出荷日)] の両方を各月の 1 件以上のオーダーに指定する必要があります。
  1. 日付フィールドを 1 つ選択して、日付軸またはヘッダーを作成します。この例では [Order Date (オーダー日)] を使用します。
  2. [Order Date (オーダー日)] を右クリックして [行] シェルフにドラッグします。
  3. [フィールドのドロップ] ダイアログで、青い [#] アイコンの付いた [MY(Order Date) (MY(オーダー日))] を選択して [OK] をクリックします。
  4. [Order ID (オーダー ID)] を右クリックして、[マーク] カードの [テキスト] にドラッグします。
  5. [フィールドのドロップ] ダイアログで [CNTD(Order ID) (CNTD(オーダー ID))] を選択します。
  6. ビューの [Distinct count of Order ID (オーダー ID の個別のカウント)] ヘッダーを右クリックして、[別名の編集...] を選択します。
  7. [別名の編集] ダイアログに新しい名前を入力して、[OK] をクリックします。
  8. "Orders Shipped (出荷済みのオーダー)" などの名前を付けて、次のような計算の計算フィールドを作成します。

    MIN(
    IF DATETRUNC('month', [Order Date]) = DATETRUNC('month', [Ship Date])
    THEN { FIXED DATETRUNC('month', [Ship Date]) : COUNTD([Order ID]) }
    END
    )


    9. データ ペインで [Orders Shipped (出荷済みのオーダー)] をダブルクリックして、フィールドをビューに追加します。

     
クリックしてソリューションを展開する
オプション 3: 日付の基盤作りの使用
このオプションでは、常に 1 つの日付フィールドが別の日付フィールドの前にくるようにする必要があります。2 つの日付フィールドで範囲を定義する場合に最適です。
  1. すべての使用可能な日付のマスター リストが含まれた表を作成します。このリストは元のデータ接続に結合されます。この例では、"Master Date List (マスター日付リスト)" という名前の表です。
  2. Tableau Desktop で [データ ソース] タブに移動します。
  3. "Sheet 1 (シート 1)" 表をキャンバス エリアに追加します。
  4. [結合] ダイアログで次のように実行します。
    1. [左] を選択する
    2. [データ ソース] で、[注文日] を選択する
    3. [Sheet 1 (シート 1)] で、[日付] を選択します。
    4. 等号をクリックし、[<=] を選択する
    5. [データ ソース] で、[新しい結合句の追加] をクリックして、[出荷日] を選択する
    6. [Sheet 1 (シート 1)] で、[日付] を選択します。
    7. 等号をクリックし、[>=] を選択します。
  5. [分析] > [計算フィールドの作成] を選択します。
  6. 開いた [計算フィールド] ダイアログ ボックスで次の操作を実行し、[OK] をクリックします。
    1. 計算フィールドに名前を付けます。この例では、計算フィールドに "Orders Placed (発注済みのオーダー)" という名前を付けます。
    2. 式フィールドで、次のような計算を作成します。
      COUNTD(
      IF DATETRUNC('month', [Order Date]) = DATETRUNC('month', [Date])
      THEN [Order ID]
      END
      )
  7. "Orders Shipped (出荷済みのオーダー)" などの名前を付けて、次のような計算の計算フィールドを作成します。
    COUNTD(
    IF DATETRUNC('month', [Ship Date]) = DATETRUNC('month', [Date])
    THEN [Order ID]
    END
    )
  8. [Date (日付)] を右クリックして [行] シェルフにドラッグします。
  9. [フィールドのドロップ] ダイアログで、[MY(Date) (MY(日付))] を選択して [OK] をクリックします。
  10. [Orders Placed (オーダー済み)] を [マーク] カードの [テキスト] にドラッグします。
  11. データ ペインで [Orders Shipped (出荷済みのオーダー)] をダブルクリックして、フィールドをビューに追加します。
クリックしてソリューションを展開する
オプション 4: データ ブレンドの使用
このオプションは、日付の範囲としては機能しません。
  1. すべての使用可能な日付のマスター リストが含まれた表を作成し、そのリストに新しい接続を作成します。この例では接続を "Sheet1 (master date list) (シート 1 (マスター日付リスト))" と呼んでいます。
  2. [データ] > [Sample - Superstore (サンプル - スーパーストア)] > [複製] に移動します。この例では、"Sample - Superstore (サンプル - スーパーストア)" の 2 つのコピーをわかりやすく区別するため、 "Sample - Superstore (link on order date) (サンプル - スーパーストア (オーダー日でリンク))" と "Sample - Superstore (link on ship date) (サンプル - スーパーストア (出荷日でリンク))" という名前を付けています。
  3. [データ] > [リレーションシップの編集...] に移動します。
  4. [リレーションシップ] ダイアログで、次を実行します。
    1. プライマリ データ ソースで、[Sheet1 (master date list)(シート 1 (マスター日付リスト))] を選択します。
    2. セカンダリ データ ソースで、[Sample - Superstore (link on order date)(サンプル - スーパーストア (オーダー日でリンク))] を選択します。
    3. [カスタム] ラジオ ボタンを選択します。
    4. [追加...] をクリックします。
  5. [フィールド マッピングの追加/編集] ダイアログ ボックスで、次を実行します。
    1. [Date (日付)] の横にある矢印をクリックして、日付オプションを展開します。
    2. ビューで使用されている最も細かい日付レベルと一致する日付レベルを選択します。この例のビューでは、[MY(Date) (MY(日付))] を使用します。
    3. 右ペインで、[Order Date (オーダー日)] の横にある矢印をクリックします。
    4. オーダー日に一致する日付レベルを選択します。
    5. [OK] をクリックします。
  6. セカンダリ データ ソースとして [Sample - Superstore (link on ship date) (サンプル - スーパーストア (出荷日でリンク))] でステップ 4 ~ 5 を繰り返し、[MY(Date) (MY(日付))] = [MY(Ship Date) (MY(出荷日))] となるリレーションシップを追加します。
  7. [OK] をクリックして [リレーションシップ] ダイアログを閉じます。
  8. 新しいワークシートで、[Sheet1 (master date list) (シート 1 (マスター日付リスト))] データ接続の [Date (日付)] を右クリックして、ビューにドラッグします。
  9. [フィールドのドロップ] ダイアログで、[MY(Date) (MY(日付))] を選択して [OK] をクリックします。
  10. ビューの [Distinct count of Order ID (オーダー ID の個別のカウント)] ヘッダーを右クリックして、[別名の編集...] を選択します。
  11. [別名の編集] ダイアログにわかりやすい名前を入力して、[OK] をクリックします。
  12. [Sample - Superstore (link on order date) (サンプル - スーパーストア (オーダー日でリンク))] データ ソースから [Order ID (オーダー ID)] を右クリックして、[マーク] ラベルの [テキスト] 上にドラッグします。
  13. [フィールドのドロップ] ダイアログで [CNTD(Order ID) (CNTD(オーダー ID))] を選択し、[OK] をクリックします。
  14. [Sample - Superstore (link on ship date) (サンプル - スーパーストア (出荷日でリンク))] データ ソースから [Order ID (オーダー ID)] を右クリックして、[マーク] ラベルの [テキスト] 上にドラッグします。
  15. [フィールドのドロップ] ダイアログで [CNTD(Order ID) (CNTD(オーダー ID))] を選択し、[OK] をクリックします。
  16. [マーク] カードの [詳細] から [CNTD(Order ID) (CNTD (オーダー ID))] をビューの数値上にドラッグし、フィールドにドロップします。
  17. [別名の編集] ダイアログにわかりやすい名前を入力して、[OK] をクリックします。

詳細情報

オプション 2 の注記 (詳細レベルの式):
  • すべての日付フィールドに、ビューで使用する日付レベルのレコードを 1 つ以上指定する必要があります。
  • FIXED 式は、その月の [Ship Date (出荷日)] がビューに表示される場所に関係なく、月ごとに [Ship Date (出荷日)] の出荷済みオーダーの合計カウント数を返します。たとえば、2 月に出荷されたオーダーが 1 月と 2 月の両方にあります。したがって、FIXED 式自体で [MY(Order Date) (MY(オーダー日))] = [January (1 月)] および MY(Order Date) (MY(オーダー日))] が [February (2 月)] の両方のオーダー 59 件を返します。
  • LOD 式で IF ステートメント内部の重複する値を返すという問題は、IF ステートメント全体を MIN() で囲んで回避します。

オプション 3 の注記 (日付の基盤作り):
  • また、すべての日付をより高い日付レベル (各月の初日など) で一覧表示することもできます。次に、ステップ 4-2 および 4-5 で、元の表の日付を適切な日付レベルに設定する結合計算を使用します (DATETRUNC('month', [Order Date (オーダー日)]) など)。
  • 元のデータ ソースにすべての日付でテーブルを追加できない場合は、すべての日付を含む外部テーブルとのクロスデータベース結合を作成してください。これには、クロスデータベース結合機能の結合句で不等式を使用するために Tableau Desktop 10.5 以降にアップグレードする必要があります。
  • このオプションによってデータが重複し、同じデータ ソースを使用する他のビューに影響が出る場合があります。
  • Tableau Prep 2021.3.1 以降、Tableau Prep で日付リストを作成せずに、日付の基盤を作成できます。手順については、「シーケンシャル データのギャップを埋める」を参照してください。
オプション 4 の注記 (データ ブレンド):
  • データ ブレンドには多くの制限事項があります。潜在的な問題に関するヘルプについては、 「データ ブレンドのトラブルシューティング」を参照してください。
  • リンクされた日付は [リレーションシップ] ダイアログで選択された最も細かい日付レベルで正確に一致する必要があります。
  • 元のデータ ソースを複製する必要があるのは、異なるデータ ソースのフィールド間でリレーションシップを作成する場合、各フィールドで一度に関連付けることができるのが 1 フィールドのみであるためです。
  • [Order Date (オーダー日)] に関連付けられるフィールドは、[MY(Date) (MY(日付))] = [MY(Order Date) (MY(オーダー日)] にリンクされた元のデータ ソースのコピーから取り出される必要があります。[Ship Date (出荷日)] に関連付けられるフィールドに対しても同様に扱います。

アクティブなレコードを時間経過とともに表示する
データのブレンド
Tableau での詳細レベルの式の作成
詳細レベルの式を含む CASE および IF ステートメントが想定外の結果を返す
この記事で問題は解決しましたか?