![見出し画像](https://assets.st-note.com/production/uploads/images/96105281/rectangle_large_type_2_3b793f3d579bff2eb1d60e4c1973b096.png?width=1200)
Tableauでの日付フィールド利用を深く理解する
こんにちは。
この記事は、Tableauで日付フィールドおよび日付時刻フィールドを利用する時にありがちな「もやもや」を、完全に解消する事を目的としています。
Tableauをこれから使い始める方、使い始めて間もない方は、たとえ、この記事の内容が良く分からなくても、気にせず、存分にTableauを使って頂きたいところです。
そんな中で、徐々に感じるかもしれない「疑問」を解消するための記事となっています。
*なお、この記事はサンプルスーパーストアデータの [オーダー日] フィールドを題材に解説しています。[オーダー日] は日付フィールドなので、利用するフィールドが日付フィールドである事を前提にした文章になっています。
もし、扱うフィールドが日付時刻フィールドである場合は、適宜、記事内で「日付時刻フィールド」と読み替えて下さい。
はじめに
例えば、サンプルスーパーストアデータで、[オーダー日] を列シェルフに持っていくと、デフォルトでは、不連続の「年(オーダー日)」になります。
この「年(オーダー日)」を右クリック、もしくは右側の▼マークをクリックすると、
![画像1](https://assets.st-note.com/production/uploads/images/57095762/picture_pc_76c63679dab2e70015ef7d5e609d3181.png)
上図のように、長いメニューが表示されます。
この中で、まずは
![画像2](https://assets.st-note.com/production/uploads/images/57095831/picture_pc_af2f771003cdb434fd5a11e4141d9100.png)
この紫枠の部分と、オレンジ枠の部分の違いを考えてみます。
これまで教育などで、
・上の方の紫枠部分の「年、四半期、月、日、(詳細から選ぶ)週数と曜日」は不連続
・下の方のオレンジ枠部分の「年、四半期、月、週数、日」は連続
![画像3](https://assets.st-note.com/production/uploads/images/57095864/picture_pc_31d3351a97870dcd91b7e70a6b5b9d2e.png)
このように習った方も多いと思います。
これも、もちろん正解です。
Tableauを使い時系列でデータを分析する時には、この理解で思うがままにデータを探索して頂いて全く問題ありません。
しかしながら、Tableauをさらに使っていると「あれ?」と疑問を感じ、もっと深く日付フィールドの扱いを理解したいと思われるかもしれません。
私も、そんな経験をした一人でした。
例を挙げると、
データペインから、[オーダー日] を右クリックしながら列シェルフに持って行ったとき、
![](https://assets.st-note.com/img/1721540064628-SgfEM3Qyvv.png?width=1200)
下図のように、[オーダー日]をどのように利用するか、を選択するWindowが表示されます。
![](https://assets.st-note.com/img/1721540117755-nYgWI2lIN7.png)
この画面で、
・それぞれが何を表しているのか?
・なぜ、年、四半期、月などが複数存在するのか?
・アイコンの青と緑の違いだけなのか?
など、疑問でした。
また、ダッシュボード上でフィルターアクションをカスタマイズする時、
フィルターに利用するフィールドを選ぶWindowで、
![](https://assets.st-note.com/img/1721540586779-f6pUujSetO.png?width=1200)
このような選択肢に遭遇します。
この赤枠の中、なぜ「オーダー日」と付くものがこれほど多くあるのか??
また、上段の赤枠内と、下段の赤枠内の違いは何なのか?
アイコンが「#」だったり、「カレンダー+時計」だったりするがその違いは何を意味しているのか?
そんな疑問を感じました。
この記事では、そんな「もやもや」の解消を目指したいと思います。
DATEPARTとDATETRUNC、不連続と連続
さて、先ほど列に置いた [オーダー日] を右クリックした時のメニュー、
![画像7](https://assets.st-note.com/production/uploads/images/57096013/picture_pc_aa980f9dd6706f54e3825cbe14cac1f8.png)
この部分の話に戻ります。
・上の方の紫枠部分の「年、四半期、月、日、(詳細から選ぶ)週数と曜日」は不連続
・下の方のオレンジ枠部分の「年、四半期、月、週数、日」は連続
この説明は正解ですが、実は正確に言うと、それぞれ
「デフォルトでは不連続になる」
「デフォルトでは連続になる」
となります。
例えば、このメニューで上の方の紫枠部分の「月」を選んだ後に
「連続」に変更することも可能ですし(下図)、
![画像9](https://assets.st-note.com/production/uploads/images/57096325/picture_pc_2caee603f52db79280777ccac06a8088.png?width=1200)
また、下の方のオレンジ枠部分の「月」を選んだあと
不連続にすることも可能です。(下図)
![画像9](https://assets.st-note.com/production/uploads/images/57096106/picture_pc_45a26edbb0085b0ed9cda1eba5e83ba5.png?width=1200)
では、この
・上の方の紫枠部分の「月」
・下の方のオレンジ枠部分の「月」
の違いは何なのか?
という事が疑問になります。
完成したVizを見ると、
・上の方の紫枠部分の「月」を選んだ方は、横軸に1~12の数字のみが並んでいます。年は関係なくなっています。
・下の方のオレンジ枠部分の「月」を選んだ方は、「何年何月」と年月で表示されています。
この違いの理由を探りたいと思います。
まず上の方の紫枠部分の「月」を選んだVizで、
列シェルフの「月(オーダー日)」をダブルクリックしてみます。
![画像10](https://assets.st-note.com/production/uploads/images/57096391/picture_pc_6ebc707e2e0777f40e5d503f1763f1ea.png)
すると、
![画像11](https://assets.st-note.com/production/uploads/images/57096412/picture_pc_fa5ebad49496d61def61a4c821f7fc7e.png)
このように、「月(オーダー日)」が計算式に変化します。
この計算式は、Tableauが [オーダー日] に対し実行している計算式になります。
DATEPART ( 'month' , [オーダー日] )
という関数になっています。
DATEPARTは、日付フィールド(および日付時間フィールド)から、ある指定した部分を数値として取り出すという関数です。
今回は、[オーダー日] の月を数値として取り出しています。
当然、1から12までの数字となります。
他の例として、上の紫枠部分の「日」を選んだVizで、
列シェルフの「日(オーダー日)」をダブルクリックしてみます。
![画像12](https://assets.st-note.com/production/uploads/images/57096464/picture_pc_19f00ea97584901e19000f42d7de729a.png)
すると、
![画像13](https://assets.st-note.com/production/uploads/images/57096507/picture_pc_619ef51beae977e25617540ef3b41627.png)
DATEPART ( 'day' , [オーダー日] )
という関数になっています。
上の紫枠部分の詳細から「週数」を選んだ場合は、
![画像14](https://assets.st-note.com/production/uploads/images/57096542/picture_pc_f978809f982e0c735212df86bac6b160.png)
列の「週(オーダー日)」をダブルクリックすると、
![画像15](https://assets.st-note.com/production/uploads/images/57096589/picture_pc_967caabb3381b281e2f0d14ef5b55ffe.png)
![画像16](https://assets.st-note.com/production/uploads/images/57096624/picture_pc_c83ac858b704f73a2721946febcdb858.png)
このように、
DATEPART ( 'week' , [オーダー日] )
となっており、やはりDATEPARTで週数を数字で取り出しています。
曜日を選んだ場合でも、
![画像17](https://assets.st-note.com/production/uploads/images/57096661/picture_pc_c0a823723f94df73da5a5ec67e041db0.png)
列の「曜日(オーダー日)」をダブルクリックすると、
![画像18](https://assets.st-note.com/production/uploads/images/57096713/picture_pc_688833c48aa73c96356a243f79cb4092.png)
![画像19](https://assets.st-note.com/production/uploads/images/57096745/picture_pc_8d312b81ea2f523df3dea16c9988880f.png)
このように、
DATEPART ( 'weekday' , [オーダー日] )
と、DATEPARTで曜日を数字として取り出している事が分かります。
取り出したのは数値ですが、デフォルトでは下図のように書式設定が「自動」とされており、「日曜日~土曜日」までの漢字で軸上に表示されます。
![画像59](https://assets.st-note.com/production/uploads/images/57149308/picture_pc_41c0caae87909bb62af69b93f815256d.png?width=1200)
もしここを、数値に変えると、軸上には1から7までの数値で表示されます。
![画像59](https://assets.st-note.com/production/uploads/images/57149333/picture_pc_0e3a81dea78b4712db638414beffeb21.png?width=1200)
結論としては、
上の紫枠の部分を選ぶとDATEPART関数が使われます。
そして、デフォルトでは不連続となります。(下図)
![画像22](https://assets.st-note.com/production/uploads/images/57096848/picture_pc_eb1f495f073db6fd2ca4bb8e46f25b07.png)
続いて、下の方のオレンジ枠部分の「年、四半期、月、週数、日」を見てみます。
![画像23](https://assets.st-note.com/production/uploads/images/57096961/picture_pc_1fd023245e4045a66b3a456bdc946467.png)
例えば、下図の下の方の月を選び、
![画像24](https://assets.st-note.com/production/uploads/images/57096986/picture_pc_c5fe16cc4707c151b45e739d4621fbf2.png)
出来たVizで、列の「月(オーダー日)」をダブルクリックしてみます。
![画像25](https://assets.st-note.com/production/uploads/images/57097014/picture_pc_4757e04043cd4b44e81e13b416c78d99.png?width=1200)
すると、
![画像26](https://assets.st-note.com/production/uploads/images/57097118/picture_pc_d57923356253fef8809ec8ba8f7dd26f.png)
今度は、先ほどとは違うDATETRUNCという関数が使われている事が分かります。
DATETRUNC ( 'month' , [オーダー日] )
となっています。
また、下図の下の方の週数を選び、
![画像27](https://assets.st-note.com/production/uploads/images/57097154/picture_pc_95f8d4627bd717256a7431e0a5e5a7a9.png)
列の「週(オーダー日)」をダブルクリックすると
![画像28](https://assets.st-note.com/production/uploads/images/57097195/picture_pc_9965e8ff0148e03f0340652482bb6442.png)
![画像29](https://assets.st-note.com/production/uploads/images/57097213/picture_pc_6b5ce5a39442a49f3cc601d957d2413b.png)
このように、
DATETRUNC ( 'week' , [オーダー日] )
と、こちらもDATETRUNC関数を利用しています。
DATETRUNC関数は、日付フィールドをある単位でまるめる。
例えば、
月でまるめる場合には、何日の何時でも、その月の一日(ついたち)00時00分00秒にまるめる。
週でまるめる場合は、その週の開始日(日曜日)00時00分00秒にまるめる。
という関数です。
結果は、日付時刻形式となります。この点もDATEPART関数とは違います。
(補足:元のフィールドが日付形式フィールドであっても、DATETRUNC関数を使うと、結果は日付時刻フィールドになります。)
ここまでの話を整理すると、
・上の方の紫枠部分を選んだ場合は、DATEPART関数で日付のある部分を数値で取り出す。デフォルトでは不連続。
・下の方のオレンジ枠部分の選んだ場合は、DATETRUNC関数で日付をある単位でまるめた日付時刻にする。デフォルトでは連続。
となります。
![画像60](https://assets.st-note.com/production/uploads/images/57233311/picture_pc_bdebf6241aec147d12f3f4ccbad43c07.png?width=1200)
これが、この
・上の方の紫枠部分と
・下の方のオレンジ枠部分
の選択肢の違いです。
*余談
なぜ、上の選択肢の方はデフォルトで不連続か、少し勝手に考えてみます。
例えば、数値で年を取り出したあとは、さらにその下層に月を置いたりします。これをするためには不連続である必要があります。
一方、下の選択肢の方は、あくまで日付時刻なので、その日付をさらに細分化し下層に置くという事は、あまりしないと思います。なので、デフォルトでは連続としている。
個人的には、このような解釈をしています。
詳細 → カスタム での設定
続いて、下図「詳細 → カスタム」の選択肢について見てみます。
![画像31](https://assets.st-note.com/production/uploads/images/57097355/picture_pc_10b0e37ce76c824f2debfe68b0d4ba10.png)
上記の2か所から入っていけますが、どれらでも結果は同じです。
このカスタム設定に入ると、下図のWindowが表示されます。
![画像32](https://assets.st-note.com/production/uploads/images/57097379/picture_pc_829c2c4d1426ed4d5e321fc8c499892b.png)
赤枠のラジオボタンで「日付部分」と「日付値」が選べます。
この違いは、これまで説明してきたDATEPART と DATETRUNC
の違いです。
日付部分 → DATEPART を使用して、ある部分の数値を取り出す。
日付値 → DATETRUNC である単位でまるめた日付時刻にする。
という設定です。
DATEPARTを日本語に直訳すると「日付部分」ですよね。日付値の方は、結果が日付値なのだなと考えると、DATETRUNCで日付時刻形式で扱う事。
と、理解するとしっくりくるかもしれません。
そして、上の詳細ボックスで、
・どの部分の数値をとりだすか or
・どの単位でまるめるか
を指定します。
今、ラジオボタンは日付部分を選び、詳細ボックスを開きました。
![画像33](https://assets.st-note.com/production/uploads/images/57097403/picture_pc_103c6d60d2440433f1aaca89ebac34ca.png)
選択肢として並んでいる、年、四半期、月、日、週数、曜日は
下図、「詳細 → カスタム」でない部分を選んだ時と全く同じです。
![画像34](https://assets.st-note.com/production/uploads/images/57097435/picture_pc_adafb1176ce698e435c643c8bcded2dd.png)
「ISO」と冒頭に付いているのは、日付の扱い方の違いです。
1年の開始の日が1月1日ではなく、1月1日にもっとも近い月曜日である。
という点が違いですが、詳しい解説は関連サイトに譲りたいと思います。
https://ja.wikipedia.org/wiki/ISO_8601
https://help.tableau.com/current/pro/desktop/ja-jp/dates_calendar.htm
ここで見て頂きたいのは、下図
![画像35](https://assets.st-note.com/production/uploads/images/57097464/picture_pc_e6d23805096e142d8ea0be93a5496f50.png)
「年/月」、「年/月/日」
という設定部分です。
先ほどラジオボタンで「日付部分」を選んでいるので、DATEPARTで数値を取り出すのですが、年/月、年/月/日を数値で取り出すとは、どのような事でしょうか?
試してみます。
このカスタム設定で、日付部分の「年/月」を選び、
列シェルフの「月/年(オーダー日)」をダブルクリックします。
![画像36](https://assets.st-note.com/production/uploads/images/57097554/picture_pc_379b5a98f7b9a6a4f7466b94e23bcdb9.png)
すると
![画像37](https://assets.st-note.com/production/uploads/images/57097605/picture_pc_2282b5035291c3bbdecbd273fa316881.png?width=1200)
(DATEPART('year', [オーダー日])*100 + DATEPART('month', [オーダー日]))
このような計算式になっています。
年の100倍に月を足しています。つまり、2021年6月なら結果は「202106」です。
これをTableauは書式設定によって、横軸に何年何月と表示してくれています。
この場合の書式設定は「自動」しか選べません。
![画像59](https://assets.st-note.com/production/uploads/images/57152703/picture_pc_1554af5bef48b02eceed28a86b17e5e3.png?width=1200)
同様に、日付部分の「年/月/日」を選び、
列シェルフの「月/日/年(オーダー日)」をダブルクリックしてみます。
![画像39](https://assets.st-note.com/production/uploads/images/57097668/picture_pc_5d824af6e5c2dca9e2f23fa95b5a146d.png)
すると
![画像40](https://assets.st-note.com/production/uploads/images/57097715/picture_pc_7db876e3be3b1f26f2a135d8735e67fc.png?width=1200)
(DATEPART('year', [オーダー日])*10000 + DATEPART('month', [オーダー日])*100 + DATEPART('day', [オーダー日]))
という計算式を作っています。
年の10000倍、月の100倍、そして日を足しています。
これを、Viz上では横軸に「年月日」の形式で表示してくれています。
これらの動きは、意識しないでもTableauが自動で行ってくれます。
私たちは深く気にせず、便利に利用して大丈夫です。
「正確な日付」とは
続いては、下図の選択肢「正確な日付」についてです。
![画像41](https://assets.st-note.com/production/uploads/images/57097747/picture_pc_a07dc3124bc05de0009d4c9e6556f0e0.png)
「正確な日付」って・・・他は正確じゃないの?それは困る!と言いたいところですが、この「正確」との言葉、英語版では「Exact」という単語になっています。
これは、「そのものの」と訳すのが適切かと思います。
つまりこの選択肢は
「日付そのもの」です。
(元フィールドが日付時刻であれば「日付時刻そのもの」)
この「正確な日付」を選ぶと
![画像60](https://assets.st-note.com/production/uploads/images/57270559/picture_pc_557d8783678c3089b6cc70dd3e774374.png)
列シェルフに「オーダー日」と入ります。デフォルトでは連続となります。
ここもダブルクリックしてみます。
![画像43](https://assets.st-note.com/production/uploads/images/57097876/picture_pc_e1971d8632e79988134c3df889409cce.png)
すると
![画像44](https://assets.st-note.com/production/uploads/images/57097904/picture_pc_ef97d3f7e321aa38c496e108d362cf19.png)
このように、オーダー日がそのまま入っているのが分かります。
オーダー日が日付フィールドなので、そのまま日付フィールドです。
元データが年単位なら、年単位
年月日単位なら、年月日単位
になります。サンプルスーパーストアデータの場合は、年月日単位です。
もし、時間/分/秒まで入っている日付時刻フィールドなら、その時間、分、秒単位で扱われます。
ここまでのまとめ
以上、これらが「日付および日付時刻フィールドをどう扱うか」の選択肢の違いです。
整理すると、下図になります。
![画像59](https://assets.st-note.com/production/uploads/images/57153431/picture_pc_31dbac162cf9fabcbcc90a3f6adfcffa.png?width=1200)
![画像59](https://assets.st-note.com/production/uploads/images/57153491/picture_pc_071f8f021f93abc3aa1de0160fb06576.png?width=1200)
日付をメジャーとして利用する場合。および、属性について。
続いて、日付をディメンションではなく、メジャーとして利用する場合の選択肢です。
下図の部分は、日付フィールドをメジャーとして集計して扱う選択肢です。
日付に対しては、カウント、カウント(個別)、最小値、最大値、属性の集計方法が可能です。
![画像47](https://assets.st-note.com/production/uploads/images/57098054/picture_pc_dde0de409da35f8bb4e1d2d10b6db8c3.png)
メニューで「メジャー」の上の「属性」を選ぶと、日付を属性として利用できます。
![画像48](https://assets.st-note.com/production/uploads/images/57098102/picture_pc_54ea0e63fc0c0d0221c50b06a170cfce.png)
ここで、この属性を利用した時に、ありがちな事を一つ紹介します。
下記のVizは、行に売上、列にオーダー日を置き、四半期毎の売上推移を示したものです。
![画像49](https://assets.st-note.com/production/uploads/images/57098138/picture_pc_839d54a1726fb6a65a5abeb61a4640c0.png?width=1200)
この線グラフを年によって色分けしたいと思います。
そのために、オーダー日をマークの色に持っていきました。
![](https://assets.st-note.com/img/1721540960843-Mi8zIfV2rF.png?width=1200)
このようになりました。
デフォルトで、マークの色に不連続の「年(オーダー日)」が置かれています。
色分けに使われている「年(オーダー日)」は、オーダー日から年を数値で取り出した、DATEPART( ‘year’ , [オーダー日] ) です。
![画像51](https://assets.st-note.com/production/uploads/images/57098234/picture_pc_71d135c038a948fadcb4c6de61dec8dc.png)
これで、線グラフが年で色分けされてはいますが、線が途中で切られています。
これは、マークの色に置かれた「年(オーダー日)」がディメンションとなっているためです。
このような場合は、「年(オーダー日)」をディメンションでなく属性に変えれば、線がつながる。と耳にしたことがある方も多いと思います。やってみます。(下図)
![](https://assets.st-note.com/img/1721541017608-yFzayhNo4d.png?width=1200)
しかしながら、今度は、線グラフが全部一色になってしまいました。
色の凡例を見ると、属性の結果は、複数の値が含まれている事を示す「*」となっています。
何故なのか、考えてみます。
色の「属性(オーダー日)」をダブルクリックしてみます。
![](https://assets.st-note.com/img/1721541084317-uckuM4zZbS.png)
すると、このように、
ATTR([オーダー日])
となっています。
属性にする前は、
DATEPART( ‘year’ , [オーダー日] )
でしたが、属性にすると
ATTR( [オーダー日] )
と、[オーダー日]がそのまま属性となっています。
今回、四半期毎に集計を行っていますが、各四半期に含まれる日付はまちまちです。
(例 : 2018年第1四半期に含まれる日付は、2018/1/1から2018/3/31 まで何日も含まれています。)
そのため、属性とした結果が全ての四半期で「*」となったのです。
もし、年で色分けしつつ線をつなぎたい場合は、
オーダー日をマークの色に置き、
デフォルトで「年(オーダー日)」となった後、
そこをダブルクリックし、
![](https://assets.st-note.com/img/1721541324800-aZ7Qnfe0hK.png?width=1200)
下図のように
DATEPART( ‘year’ , [オーダー日] )
全体をATTR()で囲み
ATTR( DATEPART( ‘year’ , [オーダー日] )
とします。
![画像55](https://assets.st-note.com/production/uploads/images/57098350/picture_pc_e21c0600988722f41f3ca5ab1d971e01.png)
これで、「オーダー日の年を数値で取り出したもの」を、属性として扱うことになります。
直後は、連続になりますが不連続に変更してあげると
![](https://assets.st-note.com/img/1721569509803-JGXsfdu9UR.png?width=1200)
このように、線がつながります。
最後のまとめ
これまで見てきた内容を踏まえて、最初に疑問だった点を振り返りたいと思います。
①
データペインのオーダー日を右クリックしながら、列シェルフなどに持って行った際に表示される選択肢。それぞれの意味は下図の通りです。
![](https://assets.st-note.com/img/1721541402745-0R3REws5AE.png?width=1200)
![](https://assets.st-note.com/img/1721569418270-8Jz1fmcCWB.png?width=1200)
②
下図、ダッシュボード上でフィルターアクションをカスタマイズする時、
フィルターに利用するフィールドを選ぶ選択肢の意味は、
![](https://assets.st-note.com/img/1721542458091-nE7m0HaGdH.png?width=1200)
③
最後にもう一つ、ブレンドリレー関係の設定でも、日付に関し複数の選択肢が表示される場面があります。
それらの意味を整理しておきます。
![画像60](https://assets.st-note.com/production/uploads/images/57235483/picture_pc_e23e9a5c233f8720c982cfb8e6c43cac.png?width=1200)
*補足
ただし、このように日付フィールドの利用の仕方によりブレンド関係の設定を都度行うのは大変です。フィールド名自体をプライマリデータソース、セカンダリデータソース間で同じ名前にし(名前の変更もしくは複製フィールドを利用)、自動でブレンド関係を設定させた方がはるかに楽です。
(詳細は下記の記事を参考にして下さい。)
https://note.com/ritz_tableau/n/na284d437605e
以上、大変長くなりましたが、日付フィールドおよび日付時刻フィールドの利用について解説させて頂きました。
日付フィールドおよび日付時刻フィールドに関する「もやもや」や「疑問点」をクリアーにする一助になると幸いです。
ご精読ありがとうございました。
By ritz_Tableau
2020-2023 Tableau Zen Master | 2019-2021,2023 Tableau Public Ambassador |2021 certified as Tableau Certified Professional | DATA Saber
X(Twitter) : @ritz_Tableau
Tableau Public : https://public.tableau.com/profile/satoshi.ganeko#!/
*記事の中に不正確な点などありましたら、是非、X(Twitter) Direct Messageでお知らせ下さい。よろしくお願いします。m(__)m
おことわり
当記事のコンテンツについて、商用利用でない場合は許可なく転載して頂いて構いません。(ハードル画像および他のサイトから引用している画像は除く)
転載の際は、当記事へのリンクを掲載し転載であることを明記してください。商用利用の場合は許可なく転載しないで下さい。
当記事のコンテンツについて、可能な限り正確な情報を掲載するよう努めていますが、誤情報が含まれたり、情報が古くなっている可能性があります。