Tableauの関数を全て試してみる〜日付関数編その1〜 #tableau
はじめに
こんにちは。DI部のtamaです。
当エントリはTableau Functions Advent Calendar 2017の9日目のエントリです。 昨日のエントリはTableauの関数を全て試してみる〜文字列関数編その4〜でした。
今回から日付に関する関数を見ていきます。
- 使用するTableauのバージョンは一貫して10.4.1です。
- 各関数の説明で引用しているのは、Tableauの公式リファレンスからの引用です。
- TableauHelp 関数
目次
検証環境
作業環境
- MacOS High Sierra 10.13.1
- Tableau 10.4.1
使用データ
- (原則)Tableau付属のサンプルスーパーストア
- (場合によって)関数グラフ描画用データ
- -1〜1の範囲で、0.01毎に値が並んでいるデータ
- 上記の値をディメンション「X軸」とし、その上に色々な関数をプロットする。
- 参考:Tableau 関数グラフの描画 | Developers.IO
DATEADD(date_part, interval, date)
概要
指定された日付と指定した interval の数を、指定されたその日付の date_part に追加して返します。
- 日付の足し算関数です。
- 指定した日付から「○○日後」「○○ヶ月後」等の日付を出すことが出来ます。
- 計算する日付の単位(年、月、日など)は「date_part」で指定できます。
- どのような値が指定できるかは日付関数を参照してください。
使ってみた
オーダー日の20日後を定義してみます。
どういう時に使う?
- 上記のように、単体で使用するよりは、他関数(IFなど)と組み合わせて使用することが多いと思います。
- 「○○日締め翌月末払い」のような、既存の日付データに特定の日数を足したい時
参考文献
DATEDIFF(date_part, date1, date2, [start_of_week])
概要
date_part の単位で表された、date1 と date2 の差異を返します。 週の始まりと見なす曜日を指定する start_of_week パラメーターはオプションです。考えられる値は「monday」、「tuesday」などです。省略される場合、週の始まりはデータ ソースによって決定されます。詳細については、データ ソースの日付のプロパティを参照してください。
- 引数に指定した2つの日付の差を算出できる関数です。
- オプションで週始まりを決めることができます。
使ってみた
オーダー日と出荷日の差をとってみましょう。
DATEDIFF('day',[オーダー日],[出荷日])
一度のオーダーで複数注文してる場合、その分レコードが増えてDATEDIFFの値も集計されてしまいます。 ですので結果画像では平均集計しています。
どういう時に使う?
- 一番ベタなのは、生年月日から年齢を算出する時ですね。
- 注意しないといけないのは、「いつ時点での年齢なのか」を意識することです。
参考文献
DATENAME(date_part, date, [start_of_week])
概要
date の date_part を文字列として返します。週の始まりと見なす曜日を指定する start_of_week パラメーターはオプションです。考えられる値は「monday」、「tuesday」などです。start_of_week が省略されると、週の始まりはデータ ソースによって決定されます。
- 指定した日付値から、特定の日付単位(年、月、日など)を取り出すことができます。
使ってみた
オーダー日が何曜日なのかを取り出してみます。
DATENAME('weekday',[オーダー日])
どういう時に使う?
- 「注文日が○○なデータ」「曜日が○○曜日なデータ」など、特定の時間帯だけに絞りたい際に、この関数を使って条件に指定したりすると、良いかもしれません。
- 日付自体をフィルターに持ってきてもよいですが…
- 他の関数(IFなど)と組み合わせて使用することも多いかと思います。
参考文献
DATEPART(date_part, date, [start_of_week])
概要
date の date_part を整数として返します。 週の始まりと見なす曜日を指定する start_of_week パラメーターはオプションです。考えられる値は「monday」、「tuesday」などです。start_of_week が省略されると、週の始まりはデータ ソースによって決定されます。 注: date_part が曜日の場合、start_of_week パラメーターは無視されます。これは、Tableauは固定した曜日順を信頼してオフセットを適用するためです。
- 指定した日付値から、特定の日付単位(年、月、日など)の「値」を取り出すことができます。
使ってみた
オーダー日から、月の値だけを取り出します。
DATEPART('month',[オーダー日])
メジャー(数値)扱いとなるので、ラベルとして表示しています。
どういう時に使う?
- DATEADDだけはできあに計算が必要な時、こちらの関数で数値として取り出してから計算することができます。
- この関数で返る値は日付型ではなく数値型…ということを覚えておくと、色々と応用できるかと思います。
参考文献
DATETRUNC(date_part, date, [start_of_week])
概要
指定された日付を date_part によって指定された精度で切り捨てます。この関数は新しい日付を返します。たとえば、月の中旬にある日付を月レベルで丸めた場合、この関数はその月の第 1 日を返します。週の始まりと見なす曜日を指定する start_of_week パラメーターはオプションです。考えられる値は「monday」、「tuesday」などです。start_of_week が省略されると、週の始まりはデータ ソースによって決定されます。
- 指定した日付値から、特定の日付単位(年、月、日など)で切り捨てることができます。
使ってみた
オーダー日を年単位で切り捨てます。
DATETRUNC('year', [オーダー日])
少々わかりづらいですが、年で切り捨てているため、月も日も全て「1」となっています。
どういう時に使う?
- 強制的に、その日付の月初や年初の値をとりたい時に使用するのがベタです。
参考文献
- postgreSQL 日付/時刻関数と演算子
- postgresのリファレンスですが、関数の解説としては同様です。
- 分析SQLを書く際、よく使うのではないでしょうか。
おわりに
今回から日付関数編に突入しました。Tableauには元々フィルタという機能があり、日付のフィルタリングは、多少の事なら、その機能で済んでしまいます。ただ、もう少し踏み込んだ日付関連の分析をしたい時は、日付関数が役に立ってくると思います。 次回はtamaによるTableauの関数を全て試してみる〜日付関数編その2です。お楽しみに。