2025.09.01

Tableau Prepで日付が数値に変換されたときの対応方法

Excelを扱ったことがある方の中には、日付を入力したにも関わらず何の関係性もなさそうな数値に変換された経験がある方もいるのではないでしょうか。
この数値は「シリアル値」と呼ばれ、日付や時間を数値で表したものです。
またこのシリアル値は、Tableau PrepでExcelファイルを読み込んでデータを加工する際にも影響を与えることがあります。
Tableauはデータソースに接続したときにフィールドのデータを解釈し、データ型を自動的に割り当てます。
そのため、Excelファイルでは日付なのにTableau Prepはシリアル値として解釈するといった、意図しない挙動をすることがあります。
本ブログでは、日付データがシリアル値として解釈されたとしても元の日付へ変換する方法についてご紹介します。

まず、Excelにおけるシリアル値では、1900年1月1日を1日目として、対象の日付が何日経過したかを表した数字になっています。
実際にシリアル値に変換した日付を見てみます。
シリアル値に変換するには、日付を入力したセルを選択し、ホームタブから表示形式を数値にすることで変換できます。

実際に1900年1月1日からの経過日数になっているか、関数を使用して確認してみます。

1日少なくなっている思いますが、シリアル値では1900年1月1日を1日目として扱うのに対し、DATEDIF関数では0日目として扱うためです。
それでは、このデータをテストデータとして、Tableau Prepで接続しシリアル値を元の日付へ変換します。
Tableau Prepでテストデータに接続すると、インプットステップでは以下のようになっています。

もしインプットステップを確認した段階で、元データでは日付なのにシリアル値として解釈されていることが分かれば、以下のように型変換することで対応可能です。

ただし、上記の方法での型変換はインプットステップでのみ有効です。
クリーニングステップで同様の処理を行うと、以下のように数値を日付と認識されずNULLになってしまいます。

Tableau Prepで一度データクリーニングのフローを作成しておけば、同じ形式のデータソースは接続を変更するだけで処理を再利用できます。
データソースを変更した時、今まで数値で読み込まれていたフィールドが文字列になったり、日付型で読み込まれていたフィールドがシリアル値になったりということが稀に発生します。
もし、日付がシリアル値として解釈される可能性があることを知っていれば、最初からインプットステップに日付型への変換処理を入れておけばよいのではないかと思われるかもしれません。
しかし、Tableau Prepでは既に日付型であるフィールドを日付型に変換するといった処理を行う機能は備わっていません。
そのため、日付データが日付型でもシリアル値でも対応できるように処理を行う必要があります。

まずは、シリアル値を日付に変換する方法を説明します。
クリーニングステップではDATE関数を使用することによってシリアル値を日付に変換することができます。
「計算フィールドの作成」をクリックし任意のフィールド名と、計算式に “DATE([シリアル値])” と記載します。

シリアル値を日付に変換したフィールドを確認してみると、元の日付より2日多くなっています。
これには理由が2つあります。
理由①:Tableau PrepはExcelと異なり1900年1月1日を0日目として扱うため。
理由②:Excelでは本来うるう年ではない1900年2月29日を存在する日付として計算がされているが、Tableauでは 1900年2月29日が存在しないため。(こちらの詳細については「1900年2月29日」で検索してみてください。)
上記2点の理由により、Tableauではシリアル値をそのまま日付に変換すると2日多くなってしまいます。そのため、以下のようにシリアル値からマイナス2した結果をDATE関数で処理することで、元の日付に変換することができます。

この計算式に、正規表現を使用して数値5桁の場合はシリアル値を変換、それ以外の場合は元のデータをそのまま取得するといった条件分岐を追加することで、
クリーニングステップで日付データが日付型の場合でもシリアル値の場合でも対応できるようになります。

ここで条件分岐の結果を両方とも文字列型に変換しているのは、日付と数値でタイプが競合することによるエラーが起きてしまうためです。
また、この計算式はシリアル値が5桁のときのみに対応しているので、5桁以外の日付を扱うときは追加で対応が必要になります。

いかがでしたでしょうか。
Tableauは基本的に簡易な操作でデータの分析・加工ができるツールではありますが、それらの機能は稀にユーザーの意図しない結果を引き起こすことがあるということを頭の片隅においていただければと思います。
以上、Tableau Prepで日付が数値に変換されたときの対応方法のご紹介でした。

RECRUIT

エンジニアが主役となり、未来を明るく照らしていく100年企業へ。

採用情報へ