はじめに
データベースへの書き込みは、多くの企業やプロジェクトで日常的に行われる作業の一つですが、データのフォーマットや型の問題がエラーの主な原因となることが多いです。特に、日付や時刻のデータは多くのフォーマットが存在し、それをデータベースの期待する形式に変換することが必須です。
BigQuery の日付フィールドの変換
データの前処理は、BigQuery のようなデータベースへのデータ書き込みにおいて、極めて重要なステップとなります。特に日付や時刻のデータを扱う際、そのフォーマットが適切であるかがクリティカルです、BigQuery は、日付と時刻のデータを TIMESTAMP 形式で受け入れるため、もし異なるフォーマットの日付データを保有している場合、そのデータを timestamp 形式に変換する必要が出てきます。
以下の transform_date_fields 関数は、この変換の一例を示しています:
入力データの例:
関数を実行した後の結果:
このサンプルでは、入力データの日付が "16-09-2023 09:24:42" のようなカスタムフォーマットで提供されている場合、transform_custom_date_format 関数はこれを標準的な timestamp 形式、つまり "2023-09-16 09:24:42" に変換します。この変換により、さまざまな日付フォーマットのデータを BigQuery などのデータベースに正確に書き込むことができます。
他の使い方や事例
カスタム日付フォーマットの変換
データソースやシステムによっては、標準的な ISO フォーマットとは異なる独自の日付フォーマットを持つことがあります。例として、日付が "dd-MM-yyyy HH:mm
" のようなフォーマットで提供されている場合、これを BigQuery の timestamp 形式に変換する必要があります。以下のサンプルコードは、このようなカスタムフォーマットの日付を変換する方法を示しています。
このサンプルでは、日付が "16-09-2023 09:24:42" のようなカスタムフォーマットで提供されている場合、関数によってこれを標準的な "2023-09-16 09:24:42" の timestamp 形式に変換されます。このように、適切な変換を行うことで、様々な日付フォーマットのデータを BigQuery へ正確に書き込むことが可能です。
タイムゾーンの考慮
異なるタイムゾーンからのデータを取り扱う際には、日付の変換だけでなくタイムゾーンの変換も重要です。例として、データが UTC タイムゾーンで格納されていると仮定し、これを Asia/Tokyo タイムゾーンに変換する場合を考えます。以下のサンプルコードは、このタイムゾーン変換のロジックを transform_date_fields 関数に組み込んだものです。
入力データの例:
関数を実行した後の結果:
このサンプルでは、UTC の日付文字列、例えば "2023-09-15T16:24:42Z" が、transform_date_fields_with_timezone 関数によって Asia/Tokyo タイムゾーンの timestamp 形式、つまり "2023-09-16 01:24:42" に変換されています。この変換により、指定したタイムゾーンに基づいて日付データを正確に BigQuery にインポートすることができます。
ビジネスロジックの組み込み
特定のビジネスルールに基づいて日付を調整する必要が生じた場合、transform_date_fields 関数に追加のロジックを組み込むことで、その要件を満たすことができます。例えば、特定の曜日(土曜日や日曜日など)に対してデータを 1 日後にシフトしたいというビジネスルールがあるとします。以下は、そのようなルールを適用するためのサンプルコードです。
入力データの例:
関数を実行した後の結果:
このサンプルでは、土曜日の日付文字列、例えば "2023-09-16T16:24:42" が、transform_date_fields_with_business_logic 関数のビジネスロジックによって日曜日の timestamp 形式、つまり "2023-09-17 16:24:42" に変換されています。このロジックは、土曜日や日曜日のデータが特定のビジネス上の理由で翌日にシフトする必要があるシナリオを想定しています。
まとめ
BigQuery や他のデータベースへのデータ書き込みをスムーズに進めるためには、前処理関数の適切な利用が必要となります。特に、日付や時刻のデータを扱う場合、それらのデータの一貫性やフォーマットが正確であることが重要です。transform_date_fields のような関数を利用することで、データベースに関連するエラーや意図しない問題を効果的に回避することが可能となります。
参考

備考
Hakky では社内のデータ活用やサービスとしてデータ提供を行うためのソリューションを展開しております。
「BigQuery の管理や使い方に困っている」など具体的な相談はもちろんのこと、「どんなことをお願いできるのか知りたい」や「こんなことをやりたい」など、ご検討段階でも構いませんので、ぜひお気軽にフォームよりお問い合わせくださいませ。