日付関数
日付は、多くのデータ ソースに共通する要素です。フィールドに認識可能な日付が含まれている場合、そのフィールドは日付または日時のデータ型になります。Viz で日付フィールドを使用すると、日付階層の自動ドリル ダウン、日付固有のフィルター オプション、特別な日付書式設定オプションなど、一連の特別な機能を利用することができます。計算で日付を使用するには、多くの場合、日付固有の関数を使用する必要があります。
他の日付の概念を理解する
日付関数は、date_part
引数、オプションの [start_of_week]
パラメーター、日付リテラル (#) など、日付固有の要素を参照することがあります。これらについては、このトピックの最後で詳しく説明します。
日付関数の機能ではありませんが、他にも興味深いトピックがいくつかあります。
- Viz で日付を表示する書式設定: カスタム日付形式
- デフォルトの日付プロパティの設定: データ ソースの日付のプロパティ
- 会計年度の日付の操作: 会計年度の日付
- ISO-8601 カレンダーの使用: 週ベースの ISO-8601 暦
ヒント: 使用するフィールドはすでに日付として認識されていて ([データ] ペインに日付アイコンが表示されている)、Viz 内での表示方法を制御しようとしていますか? 日付関数を使用するのではなく、書式を設定する必要がある場合があります。たとえば、2024 年 9 月 22 日を 09/24 と表示したいとします。これは計算ではなく、日付の書式設定によって処理されます。
日付フィールドの操作については、カスタム日付形式と関連トピックを参照してください。このページの日付関数を使用すると、表示形式を設定するのではなく、日付計算のフィールドを操作することになります。
Tableau で利用可能な日付関数
DATE
文字列や数値の式を日付の型に変換する関数。式は、認識可能な形式である必要があります。
構文 | DATE(expression) |
出力 | 日付 |
定義 | 指定された数値、文字列、または日付の <expression> に対して、日付を返します。 |
例 | DATE([Employee Start Date]) DATE("September 22, 2018") DATE("9/22/2018") DATE(#2018-09-22 14:52#) |
注 |
|
DATEADD
日付部分 (月、日など) に指定された期間を開始日に加えます。
構文 | DATEADD(date_part, interval, date) |
出力 | 日付 |
定義 | 指定された <date> の指定された <date_part> に、<interval> で指定された数値を追加した日付を返します。例えば、開始日に 3 か月を足したり、12 日間を足したりするなどです。 |
例 | すべての締め切り日を 1 週間延長する DATEADD('week', 1, [due date]) 2021 年 2 月 20 日の 280 日後 DATEADD('day', 280, #2/20/21#) = #November 27, 2021# |
注 | ISO 8601 の日付をサポートしています。 |
DATEDIFF
2 つの日付の差を日付部分 (週、年など) の数で返します。
構文 | DATEDIFF(date_part, date1, date2, [start_of_week]) |
出力 | 整数 |
定義 | <date_part> の単位で表された、<date1> と <date2> の差異を返します。例えば、バンドに入った日と抜けた日を引き算して、その人がバンドにいた期間を確認します。 |
例 | 1986 年 3 月 25 日と 2021 年 2 月 20 日の間の日数 DATEDIFF('day', #3/25/1986#, #2/20/2021#) = 12,751 その人がバンドに参加していた月数 DATEDIFF('month', [date joined band], [date left band]) |
注 | ISO 8601 の日付をサポートしています。 |
DATENAME
指定された日付部分の名前を、個別の文字列として返します。
構文 | DATENAME(date_part, date, [start_of_week]) |
出力 | 文字列 |
定義 | <date> の <date_part> を文字列として返します。 |
例 | DATENAME('year', #3/25/1986#) = "1986" DATENAME('month', #1986-03-25#) = "March" |
注 | ISO 8601 の日付をサポートしています。 よく似た計算に DATEPART があります。これは、指定された日付部分の値を、連続した整数として返します。 計算結果の属性 (ディメンションかメジャーか、連続か不連続か) と日付の書式を変更すると、 逆関数 DATEPARSE は、文字列値を受け取り、日付として書式設定します。 |
DATEPARSE
特別にフォーマットされた文字列を日付として返します。
構文 | DATEPARSE(date_format, date_string) |
出力 | 日付 |
定義 | <date_format> 引数は <date_string> フィールドがどのように配置されているかを示します。文字列フィールドはさまざまな順序で配置することができるため、<date_format> は正確に一致する必要があります。完全な説明と書式設定の詳細については、「フィールドを日付フィールドに変換する」(新しいウィンドウでリンクが開く)を参照してください。 |
例 | DATEPARSE('yyyy-MM-dd', "1986-03-25") = #March 25, 1986# |
注 |
|
データベースの制限 |
|
DATEPART
指定された日付部分の名前を、整数として返します。
構文 | DATEPART(date_part, date, [start_of_week]) |
出力 | 整数 |
定義 | <date> の <date_part> を整数として返します。 |
例 | DATEPART('year', #1986-03-25#) = 1986 DATEPART('month', #1986-03-25#) = 3 |
注 | ISO 8601 の日付をサポートしています。 よく似た計算に 逆関数 |
DATETRUNC
この関数は、日付の丸め機能と考えることができます。特定の日付を受け取り、希望する特別な条件でその日付の変化形を返します。すべての日付には、日、月、四半期、および年の値が必ずあるため、DATETRUNC
は、指定された日付部分までの各日付部分に最小値を設定します。詳細については、例を参照してください。
構文 | DATETRUNC(date_part, date, [start_of_week]) |
出力 | 日付 |
定義 | <date_part> で指定された精度で <date> を切り捨てます。この関数は新しい日付を返します。たとえば、月の中旬にある日付を月レベルで丸めた場合、この関数はその月の第 1 日を返します。 |
例 | DATETRUNC('day', #9/22/2018#) = #9/22/2018# DATETRUNC('iso-week', #9/22/2018#) = #9/17/2018# (2018/9/22 を含む週の月曜日) DATETRUNC(quarter, #9/22/2018#) = #7/1/2018# (2018/9/22 を含む四半期の最初の日) 注: 週と ISO 週では、 |
注 | ISO 8601 の日付をサポートしています。
例えば、 |
DAY
日付の日の部分 (1 ~ 31) を整数として返します。
構文 | DAY(date) |
出力 | 整数 |
定義 | 指定された <date> の日の部分を整数として返します。 |
例 | Day(#September 22, 2018#) = 22 |
注 | WEEK 、MONTH 、QUARTER 、YEAR 、および ISO の相当するものも参照してください。 |
ISDATE
文字列が有効な日付形式かどうかを確認します。
構文 | ISDATE(string) |
出力 | ブール値 |
定義 | 指定された <string> が有効な日付の場合、true を返します。 |
例 | ISDATE(09/22/2018) = true ISDATE(22SEP18) = false |
注 | 必須の引数は文字列でなければなりません。ISDATE は、日付データ型のフィールドには使用できません。計算によりエラーが返されます。 |
ISOQUARTER
構文 | ISOQUARTER(date) |
出力 | 整数 |
定義 | 指定された <date> の ISO8601 週ベースの四半期の部分を整数として返します。 |
例 | ISOQUARTER(#1986-03-25#) = 1 |
注 | ISOWEEK 、ISOWEEKDAY 、ISOYEAR 、および非 ISO の相当するものも参照してください。 |
ISOWEEK
構文 | ISOWEEK(date) |
出力 | 整数 |
定義 | 指定された <date> の ISO8601 週ベースの週を整数で返します。 |
例 | ISOWEEK(#1986-03-25#) = 13 |
注 | ISOWEEKDAY 、ISOQUARTER 、ISOYEAR 、および非 ISO の相当するものも参照してください。 |
ISOWEEKDAY
構文 | ISOWEEKDAY(date) |
出力 | 整数 |
定義 | 指定された <date> の ISO8601 週ベースの曜日を整数で返します。 |
例 | ISOWEEKDAY(#1986-03-25#) = 2 |
注 | ISOWEEK 、ISOQUARTER 、ISOYEAR 、および非 ISO の相当するものも参照してください。 |
ISOYEAR
構文 | ISOYEAR(date) |
出力 | 整数 |
定義 | 指定された <date> の ISO8601 週ベースの年を整数で返します。 |
例 | ISOYEAR(#1986-03-25#) = 1,986 |
注 | ISOWEEK 、ISOWEEKDAY 、ISOQUARTER 、および非 ISO の相当するものも参照してください。 |
MAKEDATE
構文 | MAKEDATE(year, month, day) |
出力 | 日付 |
定義 | 指定された <year> 、<month> 、<day> から構成される日付値を返します。 |
例 | MAKEDATE(1986,3,25) = #1986-03-25# |
注 | 注: 値を誤って入力した場合、4 月 31 日は存在しないというエラーが返されるのではなく、 Tableau のデータ抽出で利用できます。他のデータ ソースで利用可能か確認します。
|
MAKEDATETIME
構文 | MAKEDATETIME(date, time) |
出力 | 日時 |
定義 | <date> と <time> を組み合わせた日付時刻を返します。日付は、日付、日付時刻、または文字列の種類になることがあります。時刻は日付時刻である必要があります。 |
例 | MAKEDATETIME("1899-12-30", #07:59:00#) = #12/30/1899 7:59:00 AM# MAKEDATETIME([Date], [Time]) = #1/1/2001 6:00:00 AM# |
注 | この関数は、MySQL 互換の接続 (Tableau では MySQL および Amazon Aurora) でのみ使用できます。
|
MAKETIME
構文 | MAKETIME(hour, minute, second) |
出力 | 日時 |
定義 | 指定された <hour> 、<minute> 、<second> から構成される日付値を返します。 |
例 | MAKETIME(14, 52, 40) = #1/1/1899 14:52:40# |
注 | Tableau は時刻のデータ型をサポートしておらず、日付時刻のみをサポートしているため、出力は日付時刻になります。フィールドの日付部分は 1899 年 1 月 1 日になります。 MYSQL 互換の接続でのみ使用できる |
MAX
構文 | MAX(expression) または MAX(expr1, expr2) |
出力 | 引数と同じデータ型、または引数の一部が Null の場合 NULL 。 |
定義 | 2 つの引数の最大値を返します (2 つの引数は同じ型でなければなりません)。
|
例 | MAX(4,7) = 7 |
注 | 文字列の場合
データベースのデータ ソースでは、 日付の場合 日付の場合、 集計として
比較として
|
MIN
構文 | MIN(expression) または MIN(expr1, expr2) |
出力 | 引数と同じデータ型、または引数の一部が Null の場合 NULL 。 |
定義 | 2 つの引数の最小値を返します (2 つの引数は同じ型でなければなりません)。
|
例 | MIN(4,7) = 4 |
注 | 文字列の場合
データベースのデータ ソースでは、 日付の場合 日付の場合、 集計として
比較として
|
MONTH
構文 | MONTH(date) |
出力 | 整数 |
定義 | 指定された <date> の月を整数で返します。 |
例 | MONTH(#1986-03-25#) = 3 |
注 | DAY 、WEEK 、QUARTER 、YEAR 、および ISO の相当するものも参照してください。 |
NOW
構文 | NOW() |
出力 | 日時 |
定義 | 現在のローカル システムの日付と時刻を返します。 |
例 | NOW() = 1986-03-25 1:08:21 PM |
注 |
日付時刻でなく日付を返す同様の計算である データ ソースがライブ接続の場合、システムの日付と時刻は別のタイムゾーンになる可能性があります。これに対処する方法の詳細については、「ナレッジベース」を参照してください。 |
QUARTER
構文 | QUARTER(date) |
出力 | 整数 |
定義 | 指定された <date> の四半期を整数で返します。 |
例 | QUARTER(#1986-03-25#) = 1 |
注 | DAY 、WEEK 、MONTH 、YEAR 、および ISO の相当するものも参照してください。 |
TODAY
構文 | TODAY() |
出力 | 日付 |
定義 | 現在のローカル システムの日付を返します。 |
例 | TODAY() = 1986-03-25 |
注 |
日付ではなく日付時刻を返す同様の計算である NOW も参照してください。 データ ソースがライブ接続の場合、システムの日付は別のタイムゾーンになる可能性があります。これに対処する方法の詳細については、「ナレッジベース」を参照してください。 |
WEEK
構文 | WEEK(date) |
出力 | 整数 |
定義 | 指定された <date> の週を整数で返します。 |
例 | WEEK(#1986-03-25#) = 13 |
注 | DAY 、MONTH 、QUARTER 、YEAR 、および ISO の相当するものも参照してください。 |
YEAR
構文 | YEAR(date) |
出力 | 整数 |
定義 | 指定された <date> の年を整数で返します。 |
例 | YEAR(#1986-03-25#) = 1,986 |
注 | DAY 、WEEK 、MONTH 、QUARTER 、および ISO の相当するものも参照してください。 |
date_part
Tableau の多くの日付関数は引数 date_part
を取ります。これは、日付のどの部分 (日、週、四半期など) を考慮するかを関数に伝える文字列定数です。使用できる有効な date_part
の値は次のとおりです。
date_part | 値 |
---|---|
'year' | 4 桁の年 |
'quarter' | 1 ~ 4 |
'month' | 1 ~ 12 または "1 月"、"2 月" など |
'dayofyear' | 年初来日数 (1 月 1 日は 1、2 月 1 日は 32 など) |
'day' | 1 ~ 31 |
'weekday' | 1 ~ 7 または "日曜日"、"月曜日" など |
'week' | 1 ~ 52 |
'hour' | 0 ~ 23 |
'minute' | 0 ~ 59 |
'second' | 0 ~ 60 |
'iso-year' | ISO 8601 の 4 桁の年 |
'iso-quarter' | 1 ~ 4 |
'iso-week' | 1 ~ 52、週の開始は常に月曜日 |
'iso-weekday' | 1 ~ 7、週の開始は常に月曜日 |
[start_of_week]
パラメーター
一部の関数には、オプションのパラメーター [start_of_week]
があります。start_of_week
パラメーターを使用すると、「日曜日」か「月曜日」かなど、どの日を週の最初の日と見なすかを指定できます。省略すると、週の始まりはデータ ソースによって決定されます。データ ソースの日付のプロパティを参照してください。
以下の例では、9 月 22 日が日曜日で、9 月 24 日が火曜日です。DATEDIFF 関数は、これらの日付の間の週数を計算するために使用されています。
DATEDIFF('week', #2013-09-22#, #2013-09-24#, 'monday') = 1
- start_of_week は「月曜日」であるため、これらの日付は異なる週になります。
DATEDIFF('week', #2013-09-22#, #2013-09-24#, 'sunday') = 0
- start_of_week は「日曜日」であるため、これらの日付は同じ週になります。
日付リテラル (#)
例では、シャープ記号 (#) を日付式で使用することがよくあります。これは、テキスト文字列に引用符を使用するのと同様の日付リテラルであり、記号に囲まれた値が日付であることを Tableau に伝えます。
日付リテラルがない場合、日付は他のさまざまなデータ型として解釈される可能性があります。例:
形式 | データ型 | 値 |
'March 25, 1986' | 文字列 | 'March 25, 1986' |
#1986/03/25# | 日付 | #1986/03/25# |
#1986/03/25# | 浮動小数 | 0.00006042 |
#1986/03/25# | 整数 | 1,958 |
March 25, 1986 | 無効 |
詳細については、「リテラル式の構文」を参照してください。
日付計算の作成
Superstore サンプル データ ソースを使用して、日付計算の作成を練習します。
- Tableau Desktop で、Tableau に付属の "Sample-Superstore (サンプル - スーパーストア)" 保存したデータ ソースに接続します。
- ワークシートを開きます。
- [データ] ペインの [ディメンション] から、"Order Date (注文日)" を [行] シェルフまでドラッグします。
- [行] シェルフで、[YEAR(Order Date)] フィールド上のプラス (+) アイコンをクリックします。
"QUARTER(Order Date)" が [行] シェルフとに追加され、ビューが更新されます。
- [行] シェルフで、[QUARTER(Order Date)] フィールド上のプラス (+) アイコンをクリックし、[MONTH(Order Date)] にドリルダウンします。
- [分析] > [計算フィールドの作成] を選択します。
- 開いた計算エディターで、次の操作を実行します。
- 計算フィールドに "Quarter Date" と名前を付けます。
- 次の式を入力します。
DATETRUNC('quarter', [Order Date])
- 終了したら、[OK] をクリックします。
新しい日付計算フィールドは、[データ] ペインの [ディメンション] に表示されます。他のフィールドと同様に、このフィールドを 1 つ以上のビジュアライゼーションで使用できます。
- [データ] ペインの [ディメンション] から、"Quarter Date" を [行] シェルフにドラッグして、"MONTH(Order Date)" の右に配置します。視覚化が、年の値で更新されます。これは、Tableau が日付データを最も高い詳細レベルで動かしているためです。
- [行] シェルフで YEAR(Quarter Date) を右クリックし、[正確な日付] を選択します。
- [行] シェルフで YEAR(Quarter Date) をもう一度右クリックし、[不連続] を選択します。
視覚化は、表の各行の正確な quarter date で更新されます。