曜日締めの集計

大文字ばかりで印刷された書物は読みにくい。日曜日ばかりの人生もそれと同じだ。
- ジョン・パウル -

週次レポートを作成する場合、月曜日~日曜日までの数値をまとめることが多いと思います。しかしデータソースによっては、毎日データが入ってきてしまい、意図する表示ができないこともあります。

日曜日のデータが入る前にデータが反映されてしまうと、以下のように週30の実績が低く見えてしまいます。(本当はデータが不足しているだけ)

図3


上記の例では、日曜日のデータが入るまでは、週30のデータは表示させないようにしたいところです。

今回はこうした場合の対抗策として、「データ内の最新の日曜日まで」にデータを絞る方法を検討してみました。


週の開始曜日を定義する

今回は以下のデータを使って、「2021/7/1 ~ 最新の日曜」までで集計してみます。
日付曜日売上(千円)
2021/7/1木曜日235
2021/7/2金曜日563
2021/7/3土曜日852
2021/7/4日曜日133
2021/7/5月曜日797
2021/7/6火曜日221
2021/7/7水曜日950
2021/7/8木曜日316
2021/7/9金曜日841
2021/7/10土曜日359
2021/7/11日曜日858
2021/7/12月曜日220
2021/7/13火曜日638
2021/7/14水曜日310
2021/7/15木曜日880
2021/7/16金曜日907
2021/7/17土曜日819
2021/7/18日曜日942
2021/7/19月曜日477
2021/7/20火曜日948


Tableauではデフォルトの週の定義が「日曜開始 ~ 月曜締め」になっているので、まずは週の定義を「月曜開始 ~ 日曜締め」に変更します。

データソースを右クリック▶日付のプロパティ▶週の開始を「月曜日」に

図4

図5

これでまずは週の定義を「月曜開始 ~ 日曜締め」に変更することができました。


最新の日曜日までで集計する

そして、ここからはデータ内の最新の日曜日までのデータが反映されるようにします。
今回は以下の手順を試してみました。

  1. 「各行の[日付]が日曜日の場合は日付を返す」計算式を作成する

    STEP①
    IF ISOWEEKDAY([日付]) = 7 THEN [日付] END

    ISOWEEKDAY関数は曜日を求める計算式で、週の開始曜日を1、週の最終曜日を7で返します。今回は「月曜開始 ~ 日曜締め」に定義しているので、日曜日の値は7になります。


  2. STEP①で算出した日付の中でのデータ内最大日付を求める計算式をつくる

    STEP②
    {MAX([STEP①])}

    { } はLOD計算のFIXED関数の省略形の書き方です。集計粒度によらず、データ内の最大値を返します。

  3. STEP②が各行の[日付]以上であれば「真」を返す計算式をつくる

    STEP③
    [日付]<=[STEP②]

    比較演算子のみを計算式に入れた場合、条件を満たす場合は「真」、それ以外は「偽」が返ります。

  4. STEP③をフィルタに入れ、「真」を選択する

上記の結果をまとめると、以下のようになります。
図6

データ開始の2021/07/01 ~ 最終日曜日である2021/07/18までが「真」、それ以降は「偽」になっていることがわかります。


まとめ

今回は日曜日締めで集計する方法をご紹介しました。ぜひお試しください!

Tableau Public