見出し画像

実務でもご注意を!海外Excelの日付

こんばんは!DATA Saber挑戦中のたっくんです。
昨年から、Tableau Prep Builderの例題サイトPreppin' Data について勉強会に参加しています。今年度から月1回、印象的だった例題を取り上げて解説するyoutube動画の公開が始まっていますので、こちらをご参考ください。(動画以外にもPrepの必見Tipsが満載です!ぜひ色々覗いてみましょう)

今回は、先週アップロードされた24Wk25の動画の中で、発表の機会をいただきましたのでそのご紹介です。中心的なトピックは、海外から受け取ったExcelファイルの日付に関する注意点で、ここではそのサマリーと、捕捉情報も追加したまとめをしたいと思います。

Preppin' Data 24Wk25で起きた問題

Preppin' dataは海外サイトなので、日本であまり見かけない日付書式をよく扱います。ところが、24Wk25(と24Wk24)に限ってなぜか正解にたどり着けない人が続出しました。その原因と思われたのが、日付書式バラバラ問題でした。

例題サイトからDLしたExcelファイル

ある日付のフィールドが、半分以上のレコードで M/D/YYYY書式なのに、部分的に YYYY/D/M になっているように見えました。動画を見ていただくと、このバラバラをいかに統一するか、みなさん知恵を絞られています。

自分が感じた違和感と調べたこと

自分も、他者の解法をXで見て、上記の書式変換をすればいいのはわかったのですが、どうにも違和感が抜けませんでした。

というのも、Prep上でYYYY/D/Mに見えているレコード、Excel上で見ると、日付そのものが違うからです。例えばPrep上で "2023/3/10" を10月3日に変換する解法が多いけれど、Excel上で同じレコードを見ると2023年3月10日の値が入っているのです。え? YYYY/M/Dなの? どっちなの?と。

そこで、元々どないやねん?を例題サイトで確認して気づいたのが、24Wk25を扱う動画の30:00付近からになります。

要は、例題サイトは書式の揃ったデータを提供しているのにExcel日本語版がそれをバラバラにしてしまった、YYYY/M/Dで変換できるセルだけ勝手に変換した結果だ、と判明しました。


出題者の意図?…問題ないときは書式設定が統一されている!

これまでも度々登場したはずの海外日付、なぜ今回は困ったのか。実務でも海外からのExcelを扱うことがあるので、気になって深堀しました。結論から言うと、出題者は日本版で開いたときの変質も見越してデータソースづくりをしていたようです。

24年以後の例題25問分で使ったデータソースを見返すと、Excelの日付書式に関わるのは、Wk09、13、15、20、22~25の8問でした。この中で、Wk20までの4問では、下図のようにセルの書式設定が日付型またはユーザー定義の型のどちらかで、統一されていることがわかりました。

Wk09のデータソースにおける日付型指定

ところがWk22は、この設定が「標準」のため、ちょっとした操作ですぐ変わってしまう設定です。

Wk22の日付列は文字列ですが、選択+Enterで日付型に変更されてしまいます

またWk23,24については、同列の中で日付型とユーザー型のセルが混合されていました。

Wk23, 24のデータソースでは書式設定が日付型とユーザー型で実はバラバラ

例題サイトをブラウザで見ると揃っている書式が、日本語版だとバラバラになったのは、見た目ではわからないExcel書式設定の不統一が主因だったということになります。

結論:海外日付のExcelで文字列と日付が混合してたら超危険!

今回の考察で、海外Excelを日本で開いただけで、書式設定にによっては日付そのものが変わってしまう場合があると知りました。これは実務でも注意が必要と思います。

海外からもらったExcelデータを開いたときに、このような状態になっていたら、CSVか何かでデータを貰いなおすほうがよさそうです。

もらってきて開いただけなのに、表示が左右に振れている→危険!

今回のように登場する日付が多ければ yyyy/d/m と変換することも考えられますが、例えば月初とか、第一週の月曜だけとか、絶妙なタイミングでの定点観測だと、変換規則が思いつかないです。

Excel書式について関連Tips

自分の経験上、Excel書式についてはもうひとつ気にしておいたほうがいいことがあるので、ご紹介します。

Prepで複数データを読み込むとき、「文字列で入力してクリーニングすればいいや!」という考えはよくあるし実際便利なのですが、時として書式設定による値の変質もあることに注意が必要です。

例えばExcelで 3.141542 をセル入力して、書式設定で 3.1 と表示するようにした場合、Prepで数値として読み込めば 3.141542 のままですが、文字列として読み込むと 3.1 に変わってしまいます。

以上、思いつくままにGET DATAの現場の話を書いてしまいました。誰かの役に立てばうれしいなと思いつつ。