ナレッジベース

複数の日付の間にある曜日の数を計算する


発行: 17 Feb 2017
最終修正日: 05 Jun 2023

ご質問

2 つの日付の間にある平日または営業日の数を計算する方法。たとえば、データ ソースの 2 つのデータ フィールド間や 2 つのパラメーター日付間の営業日数、または、1 か月以内の平日の数です。

環境

Tableau Desktop

回答

クリックしてソリューションを展開する        

オプション 1: データソースの 2 つの日付フィールド間の平日の数をカウントする

ステップ 1: 計算フィールドの作成
  1. [分析] > [計算フィールドの作成] を選択
  2. 開いた [計算フィールド] ダイアログ ボックスで次の操作を行い、[OK] をクリックします。
    1. 計算フィールドに名前を付けます。この例では、計算フィールドに "Order Date (shifted to weekday) (注文日 (平日にシフト))" という名前を付けます。
    2. 式フィールドで、次のような計算を作成します。
       
      IF DATEPART('weekday', [Order Date]) = 1
      THEN DATEADD('day', 1, [Order Date])
      ELSEIF DATEPART('weekday', [Order Date]) = 7
      THEN DATEADD('day', 2, [Order Date])
      ELSE [Order Date]
      END
  3. "Ship Date (shifted to weekday) (出荷日 (平日にシフト))" などの名前を付けて、次のような計算の計算フィールドを作成します。
     
    IF DATEPART('weekday', [Ship Date]) = 1
    THEN DATEADD('day', -2, [Ship Date])
    ELSEIF DATEPART('weekday', [Ship Date]) = 7
    THEN DATEADD('day', -1, [Ship Date])
    ELSE [Ship Date]
    END
  4. "# of Weekdays from Order to Shipping (注文から出荷までの間の平日の数)" などの名前を付けて、次のような計算の計算フィールドを作成します。
     
    MIN(
    DATEDIFF('day', [Order Date (shifted to weekday)], [Ship Date (shifted to weekday)])
    + 1
    - 2 * DATEDIFF('week', [Order Date (shifted to weekday)], [Ship Date (shifted to weekday)])
    )
ステップ 2: ビューの作成
  1. "Order ID (注文 ID)" を [行] シェルフまでドラッグします。
  2. オプション: [注文日] と [出荷] 日を [行] シェルフにドラッグします。
  3. "# of Weekdays from Order to Shipping (注文から出荷までの間の平日の数)" を [マーク] カードの [テキスト] にドラッグします。
 
クリックしてソリューションを展開する       

オプション 2: 毎月の平日の数を 1 つの日付フィールドについてカウントする   

この例では、サンプルのデータセット "Superstore (スーパーストア)" を使用して、毎月の平日の数を注文日用に計算します。
  1. [分析] > [計算フィールドの作成] を選択
  2. 開いた [計算フィールド] ダイアログ ボックスで次の操作を行い、[OK] をクリックします。
    1. 計算フィールドに名前を付けます。この例では、計算フィールドに "Start of Month Date (月初めの日)" という名前を付けます。
    2. 式フィールドで、次のような計算を作成します。

      DATETRUNC('month', [Order Date])
  3. "End of Month Date (月末の日)" などの名前を付けて、次のような計算の計算フィールドを作成します。

    DATEADD('day', -1, DATEADD('month', 1, DATETRUNC('month', [Order Date])))
  4. オプション 1 に従って、[注文日] ではなく "Start of Month Date (月初めの日)" を、[出荷日] ではなく "End of Month Date (月末の日)" を使用します。
クリックしてソリューションを展開する

オプション 3: 祝日を除いて平日の数を数える

この例では、サンプルのデータセット "Superstore (スーパーストア)" を使用して、注文日と出荷日の間の曜日の数を注文ごとに計算します。

ステップ 1: データの設定
  1. 祝日の日付のリストが含まれている元のデータ ソースに表を追加します。この例では、"Holidays (祝日)" という名前の表です。
  2. Tableau Desktop で [データ ソース] タブに移動します。
  3. 表 "Holidays (祝日)" をキャンバス エリアに追加します。
  4. [結合] ダイアログで次のように実行します。
    1. [左] を選択する
    2. [データ ソース] で、[注文日] を選択する
    3. "Holidays (祝日)" で "Holiday Date (祝日の日付)" を選択する
    4. 等号をクリックし、[<=] を選択する
    5. [データ ソース] で、[新しい結合句の追加] をクリックして、[出荷日] を選択する
    6. "Holidays (祝日)" で "Holiday Date (祝日の日付)" を選択する
    7. 等号をクリックし、[>=] を選択する
 
: [注文日] と [出荷日] はそれぞれ実際の開始日と終了日で置き換える必要があります。開始日と終了日が計算フィールドである場合は、結合計算でこれらの計算を再作成できます。元のデータ ソースに祝日の日付で表を追加できない場合は、祝日の日付を含む外部表とのクロスデータベース結合を作成してください。これには、クロスデータベース結合機能の結合句で不等式を使用するために Tableau Desktop 10.5 以降にアップグレードする必要があります。
 
ステップ 2: 計算の作成
  1. ワークシートに移動します。
  2. オプション 1 の 1.1 から 1.3 までのステップに従って、[Order Date (shifted to weekday) (注文日 (平日にシフト))] 計算と [Ship Date (shifted to weekday) (出荷日 (平日にシフト))] 計算を作成します。
  3. "# of Weekdays from Order to Shipping (注文から出荷までの間の平日の数)" などの名前を付けて、次のような計算の計算フィールドを作成します。
     
    MIN(
    DATEDIFF('day', [Order Date (shifted to weekday)], [Ship Date (shifted to weekday)])
    + 1
    - 2 * DATEDIFF('week', [Order Date (shifted to weekday)], [Ship Date (shifted to weekday)])
    ) - COUNTD([Holiday Date])

ステップ 3: ビューの作成
  1. "Order ID (注文 ID)" を [行] シェルフまでドラッグします
  2. オプション: [注文日] と [出荷] 日を [行] シェルフにドラッグします
  3. "# of Weekdays from Order to Shipping (excluding holidays) (注文から出荷までの間の平日の数 (祝日を除く))" を [マーク] カードの [テキスト] にドラッグします。
この記事で問題は解決しましたか?