
日付をつかう(2) -文字を日付に変えてみる-
皆さん、こんにちは!
今回は、データソースにある文字列を日付型に変更するケースを取り上げます。
実務でもあるあるだと思いますが、文字で記載された日付は けっこう表記揺れがあり修正に手間がかかることありませんか?
Prepの型変換の力を借りて、簡単に日付データに変える型変更の方法をご紹介します。
Tableau Desktopよりも、Prepの方がかなりの種類の文字列を「日付型」に型変更してくれます。Tableau DesktopでViz作成などに利用するデータも、Prepで前処理を行う際は「日付型」を予め型変更しておくと使い勝手が良いケースもあります。
また、文字列の「日付型」への型変更は、日付関数を利用してゴリゴリやらないと日付型にならないデータもあります。
こちらについては次回以降で改めてご説明します。
1. データソース接続時に日付に変えてみよう
前回同様に、Preppin‘ Dataの次データソースを利用します。日付に関する文字列データです。
データソース(2024Week11より)
https://preppindata.blogspot.com/2024/03/2024-week-11-13-months-in-year.html

このデータソースでは、Prepでデータ接続した際に「文字列型」として自動認識されます。

青線で囲まれた部分がデータ型を示しています
青線で囲まれた部分をクリックすると、データ接続時(クリーニングステップに進む前)にデータ型の変更を行うことが出来ます。
「日付」を選んでみます。

この文字列は月日の英語表記になっていますが、プレビュー欄で「NULL」が表示されています。

実際にクリーニングステップでデータの内容を確認すると、NULLのみとなっていて日付のデータに変換されていないことが分かります。

月日のみの英語表記だとデータ接続時にはPrepが日付型に認識してくれませんでした。データソースのファイルを少し修正し、次の3つの文字列を追加して、データ接続を行ってみました
2024の年を最後に追加記載
数字で年月日を記載
“-“ を利用して数字で日月年の順に記載(1の順番と同じ)

この修正したデータをデータ接続すると、3、4のデータフィールドで日付型になっています。

クリーニングステップでデータの内容を確認し、3、4のフィールドデータがちゃんと年月日の順で日付型として表示されています。

このケースでは、データ接続時にPrepが自動で「日付型」に認識をしてくれていますが、文字列によってはデータ接続時は「文字列型」で認識され、データ接続ペイン内の タイプ欄をクリックして型変更で「日付型」に変更出来るケースもあります。
今回修正したデータでも、 [Data] [Data 2024] の2フィールドはデータ接続後にタイプ欄から型変更を試みても、「日付型」へ変更することは出来ませんでしたが、データによってはタイプ欄で型変更が可能な場合もあります。
状況に応じて、データ接続時に型の内容を確認してみましょう。
2. クリーニングステップで日付に変えてみよう
データ接続時に「日付型」に認識されないデータでも、クリーニングステップで「日付型」に型変換出来るケースがあります。
実際に作業して、確認してみましょう。
先程データソースのファイルを修正したものを利用します。
データ接続時に「文字列型」で認識された [Data] [Data 2024] の2フィールドを型変更してみましょう。

タイプ欄に表示されている「Abc」の部分をクリックすると、データ型の一覧が表示されます。ここから「日付」を選びます。

データ接続時に「文字列型」で認識された2つのフィールドとも、「日付型」に変更することが出来ました。

ただし、データソースの元からあった [Data] フィールドでは年に関する情報がないため、1990年の仮表示で日付となっています。
月日の表示はデータ内容を反映した正しいものになっています。

Prepのクリーニングステップはかなり柔軟に文字列を「日付型」に変換してくれます。データソースの入力時の記載揺れによる表記のばらつき(揺れ)を、Prepが上手く拾ってくれる感じ。
後述の一覧表を参照頂き、タイプ欄からの変更を試みてご自分のデータが「日付型」に型変換出来るかどうかを確認してみてください。
3. 日付型に型変更が可能な文字列の一覧表
Mr.もりた が第3回Prepユーザー会のイベントで、さまざまな形式の文字列から日付データへの型変換が出来るか出来ないかの確認しています。
下の一覧表、Prepの型変換を利用して文字列を日付型に変更する際に役立ちますのでご参照ください。
