![見出し画像](https://assets.st-note.com/production/uploads/images/139556489/rectangle_large_type_2_c8f35b5b823ccf02ea256ac4d248a3e1.png?width=1200)
Tableau の日付関数を全て実装しながら確認してみた
はじめに
こんにちは。今回は Tableau の関数を深堀っていきたいと思います。というのも関数って覚えなくても良いが、どんな関数があって何ができるのかは知っておきたいと考えたわけです。知らないとアイデアも出てこないですしね…
あとは個人的に Tableau Certified Data Analyst の資格試験の勉強としても取り組んでいきたいと思います!
Tableau の公式サイトも見ながら一つ一つ挙動を確認しながら理解を深めていきます!
▼使用するデータ
DATEADD 関数
DATEADD(日付部分、間隔、日付)
指定された日付に増分を追加し、新しい日付を返します。増分は間隔と日付部分によって定義されます。
例:DATEADD('month', 3, #2004-04-15#)= 2004-07-15
DATEADD('day', 10, [オーダー日])
/*
・オーダー日から 10 日後を求める
▼深掘り
・日付部分: day, month, quarter, year のどれかを指定
・間隔:増減分を指定(マイナスも可能)
・日付:データ元となる日付型データを選択
*/
![](https://assets.st-note.com/img/1714872125362-roMNuIy50w.png?width=1200)
DATEDIFF 関数
DATEDIFF(日付部分、開始日、終了日、[週の始まり])
2 つの日付の間の差を返します。ここでは開始日を終了日から減算します。間隔は日付部分に指定された単位で表されます。
週の始まりを省力すると、週の開始曜日はデータソースに構成された開始曜日によって決定されます。
例:DATEDIFF('month', #2004-07-15#, #2004-04-03#, 'sunday') = -3
DATEDIFF('day', [オーダー日], [出荷日], 'monday')
/*
・オーダー日と出荷日の間の日数を求める
▼深堀り
・日付部分:day, month, quarter, year のどれかを指定
・[週の始まり]:何も指定しなければデータソースの日付プロパティで
設定されている曜日になるが、月曜日始まりにしたい場合は'monday' にすること
*/
![](https://assets.st-note.com/img/1714874150524-3NV4rDByJy.png?width=1200)
▼データソースの日付プロパティに関して
![](https://assets.st-note.com/img/1714873939104-UyXo9C6l3e.png?width=1200)
![](https://assets.st-note.com/img/1714874064935-gBj9Xa4kOi.png)
DATENAME 関数
DATENAME(日付部分、日付、[週の始まり])
指定された日付の部分を整数として返します。対象となる部分は日付部分で定義されます。週の始まりを省略すると、週の開始曜日はデータソースに構成された開始曜日によって決定されます。
例:DATENAME('month', #2004-04-15#) = 'April'
DATENAME('year', [オーダー日])
/*
・オーダー日の月名を求める
▼深掘り
・日付部分:day(整数)、month(月名)、year(整数)
・日付:データ元となる日付型データを選択
※文字列型として返される
*/
![](https://assets.st-note.com/img/1714875097718-eUUL5rzPuX.png?width=1200)
DATEPARSE 関数
DATEPARSE(書式、文字列)
文字列を指定された形式の日付に変換します。
例:DATEPARSE('dd.MMMM.yyyy', '15.April.2004') = 2004-04-15 12:00:00 AM
DATEPARSE('yyyy-MM-dd', [オーダー日 (文字列)])
/*
・オーダー日(文字列)を日付型に変換する
▼深掘り
・書式:オーダー日(文字列)では 2021-01-01 と '-' で年月日を
繋いだ書式になっているので、同じにする必要がある。また年月日の並び順も同じにする。
・文字列:データ元となる文字列のデータを選択
*/
![](https://assets.st-note.com/img/1714908428218-OfsegacvSG.png?width=1200)
DATEPART 関数
DATEPART(暦の単位、日付、[週の始まり])
指定された日付の部分を整数として返します。対象となる部分はdate_part で定義されます。週の始まりを省略すると、週の開始曜日はデータソースに構成された開始曜日によって決定されます。
例:DATEPART('month', #2004-04-15#) = 4
DATEPART('month', [オーダー日], 'monday')
/*
・オーダー日の 'month'(月)を指定して 'month' を整数で返す
▼深掘り
・暦の単位:day, month, year のどれかを指定
・日付:データ元となる日付型データを選択
・[週の始まり]:月曜日から指定する場合は、'monday' と入力
*/
![](https://assets.st-note.com/img/1714911883276-sHO1eREvyc.png?width=1200)
![](https://assets.st-note.com/img/1714911920337-I8vyXS3H1p.png?width=1200)
DATETRUNC 関数
DATETRUNC(日付部分、日付、[週の始まり])
指定された日付を日付部分で指定された精度で切り捨て、新しい日付を返します。週の始まりを省略すると、週の開始曜日はデータソースに構成された開始曜日によって決定されます。
例:DATETRUNC('quarter', #2004-08-15#) = 2004-07-01 12:00:00 AM
DATETRUNC('month', [オーダー日], 'monday')
/*
・月度を指定することで、年月までで括られた日付データを返す(日付は切り捨て)
▼深掘り
・日付部分:day, month, quarter, year を選択
・日付:データ元となる日付型データを選択
・[週の始まり]:月曜日から指定する場合は、'monday' と入力
*/
![](https://assets.st-note.com/img/1714913039720-07QEDKvbvb.png?width=1200)
![](https://assets.st-note.com/img/1714913114770-9urylkGUu5.png?width=1200)
DAY 関数
DAY(日付)
指定された日付の日の部分を整数として返します。
例:DAY(#2004-04-12#) = 12
DAY([オーダー日])
/*
・オーダー日の日付を整数として返す
▼深掘り
・合計が返され、重複したデータも存在するため、平均にすると期待した日付が整数として取得可
*/
![](https://assets.st-note.com/img/1714913464293-5X5q7Gx8QH.png?width=1200)
ISDATE 関数
ISDATE(文字列)
指定された文字列が有効な日付の場合、true を返します。
例:ISDATE('2004-04-15') = True
ISDATE([オーダー日 (文字列)])
/*
・文字列のオーダー日が有効な日付になっているかを判定
▼深掘り
・文字列:文字列である必要がある。日付型のデータを渡してもエラーになる。
*/
![](https://assets.st-note.com/img/1714913781812-X6m3PTrMT5.png?width=1200)
ISOQUARTER 関数
ISOQUARTER(日付)
指定された日付の四半期の部分を整数として返します( ISO 8601 規格に従った週ベース)。
例:ISOQUARTER(#2004-03-29#) = 2
ISOQUARTER([出荷日])
/*
・日付型のオーダーの四半期を返す
▼深掘り
・合計値が返ってくるので、平均にする
・2021年1月3日がなぜか 4 になっている...まだ理解できていない
*/
![](https://assets.st-note.com/img/1714956524925-k63koAR9Pg.png?width=1200)
▼ ISO 8501 とは
ISOWEEK 関数
ISOWEEK(日付)
指定された日付の週の部分を整数として返します( ISO 8601 規格に従った週ベース)。
例:ISOWEEK(#2004-03-29#) = 14
ISOWEEK([オーダー日])
/*
・日付型のオーダーの週を整数で返す
▼深掘り
・合計値が返ってくるので、平均にする
*/
![](https://assets.st-note.com/img/1714956731338-0gV2rGBNIg.png?width=1200)
ISOWEEKDAY 関数
ISOWEEKDAY(日付)
指定された日付の曜日の部分を整数として返します( ISO 8601 規格に従った週ベース)。
例:ISOWEEKDAY(#2004-03-29#) = 1
ISOWEEKDAY([オーダー日])
/*
・オーダー日の日付の曜日を整数で返す
▼深掘り
・月曜日:1, 火曜日:2, 水曜日:3, 木曜日:4, 金曜日:5, 土曜日:6, 日曜日:7
*/
![](https://assets.st-note.com/img/1714957023425-W82PmWkTg5.png?width=1200)
ISOYEAR 関数
ISOYEAR(日付)
指定された日付の年の部分を整数として返します( ISO 8601 規格に従った週ベース)。
例:ISOYEAR(#2004-03-29#) = 2004
ISOYEAR([オーダー日])
/*
・オーダー日の日付の年を整数で返す
▼深掘り
・月曜日:1, 火曜日:2, 水曜日:3, 木曜日:4, 金曜日:5, 土曜日:6, 日曜日:7
*/
![](https://assets.st-note.com/img/1714957209027-JQ95oH0Yte.png?width=1200)
MAX 関数
MAX(式) または MAX(式1, 式2)
全レコードにおける単一の式の最大値、または各レコードにおける 2 つの式の最大値を返します。
例:MAX([売上])
MAX([オーダー日])
/*
・オーダー日を渡すと、このデータ内での最大日付(最新日付)を返す
▼深掘り
・日付データに対しても使用することが可能
*/
![](https://assets.st-note.com/img/1714957447725-6npJZ8z5Mj.png?width=1200)
MIN 関数
MIN(式) または MIN(式1, 式2)
全レコードにおける単一の式の最小値、または各レコードにおける 2 つの式の最小値を返します。
例:MIN([利益])
MIN([オーダー日])
/*
・オーダー日を渡すと、このデータ内での最小日付(最も古い日付)を返す
▼深掘り
・日付データに対しても使用することが可能
*/
![](https://assets.st-note.com/img/1714957592779-LjIS9QlWP7.png?width=1200)
MONTH 関数
MONTH(日付)
指定された日付の月の部分を整数として返します。
例:MONTH(#2004-04-12#) = 4
MONTH([オーダー日])
/*
・オーダー日の月を整数で取得して返す
*/
![](https://assets.st-note.com/img/1714957829503-yE3DmJVEwr.png?width=1200)
NOW 関数
NOW()
現在の日付と時刻を返します。
例:NOW() = 2004-05-12 1:08:21 PM
NOW()
/*
・日付と時刻型が生成される
*/
![](https://assets.st-note.com/img/1714957984187-YUMbmAbzl5.png?width=1200)
QUARTER 関数
QUARTER(日付)
指定された日付の四半期の部分を整数として返します。
例:QUARTER(#2004-04-12#) = 2
QUARTER([オーダー日])
/*
・オーダー日の四半期を整数で返す
*/
![](https://assets.st-note.com/img/1714958213076-bbMB6qw0vo.png?width=1200)
TODAY 関数
TODAY()
現在の日付を返します。
例:TODAY() = 2004-05-12
TODAY()
/*
・日付型が生成される
*/
![](https://assets.st-note.com/img/1714958359707-f8y7XOTNKM.png?width=1200)
WEEK 関数
WEEK(日付)
指定された日付の週の部分を整数として返します。
例:WEEK(#2004-04-12#) = 16
WEEK([オーダー日])
/*
・オーダー日が何周目なのかを整数で返す
▼深掘り
・ISOWEEK と結果がことなる。ISO をおさえること
*/
![](https://assets.st-note.com/img/1714958643933-lvvMEg3xYY.png?width=1200)
YEAR 関数
YEAR(日付)
指定された日付の年の部分を整数として返します。
例:YEAR(#2004-04-12#) = 2004
YEAR([オーダー日])
/*
・オーダー日が年を整数で返す
*/
![](https://assets.st-note.com/img/1714958797132-U6ZuAC2vYw.png?width=1200)
最後に
以上が日付関数でした!また別の関数も全て確認していきます!
もし私の解釈が誤っていたら教えていただけると嬉しいです。