CData Snowflake Drivers で時刻データを取り扱う際の注意点

by 杉本雄太 | 2024年06月27日

本記事ではCData Snowflake Drivers で、時刻データを取り扱う際の注意点についてご説明します。

Snowflakeで時刻データを取り扱う際には、以下の2点について注意が必要です。以下の設定によっては、意図していないデータ(時刻がズレたデータ)が登録されてしまう可能性がありますので、本記事ではその原因と対策について解説します。

➀カラムのTIMESTAMPの種類
②パラメータのCLIENT_TIMESTAMP_TYPE_MAPPINGの設定値

SnowflakeのTIMESTAMPについて

SnowflakeのTIMESTAMPについては、こちらのドキュメントに記載があります。ポイントとしてはTIMESTAMPが3種類あるということです。対象のカラムがどのTIMESTAMPを利用しているか確認してください。

  • TIMESTAMP_LTZ
  • TIMESTAMP_NTZ
  • TIMESTAMP_TZ

Snowflakeのセッションパラメータについて

Snowflakeには動作を制御できるパラメーターが用意されています。TIMESTAMPに関連するパラメータとして、CLIENT_TIMESTAMP_TYPE_MAPPINGがあります。これはどのTIMESTAMPの種類を利用するかを指定するパラメータで、デフォルト値はTIMESTAMP_LTZが設定されています。詳細はこちらの公式ドキュメントを参照ください。

注意点

基本的な考え方としては前述の二つを合わせる必要があります。つまり対象カラムのTIMESTAMPの種類とCLIENT_TIMESTAMP_TYPE_MAPPINGの設定値を合わせる必要があります

CData Snowflake DriversでCLIENT_TIMESTAMP_TYPE_MAPPINGを設定する方法

接続プロパティのSessionParametersで指定することが可能です。例えばCData JDBC Driver for Snowflakeであれば、こちらのヘルプの記載があります。

そして以下のように設定することが出来ます。

例:jdbc:snowflake:Warehouse=xxxxx;User=xxxxx;Password=xxxxx;URL=xxxxx;Database=xxxxx;Schema=xxxxx;SessionParameters='CLIENT_TIMESTAMP_TYPE_MAPPING=TIMESTAMP_NTZ';

対象カラムのTIMESTAMPの種類と
CLIENT_TIMESTAMP_TYPE_MAPPINGの設定値が異なる場合

それでは対象カラムのTIMESTAMPの種類と
CLIENT_TIMESTAMP_TYPE_MAPPINGの設定値が異なるとどうなるか見てみましょう。下記の条件で状態で時刻データを登録すると、意図していないデータ(時刻がズレたデータ)が登録されてしまいます。

  • TIMESTAMP:TIMESTAMP_NTZ
  • CLIENT_TIMESTAMP_TYPE_MAPPING:TIMESTAMP_LTZ
  • インプットデータ:2023-05-31 10:00:00

実際にデータを投入してSnowflakeで確認すると、TIMESTAMP_NTZに登録した時刻データが本来の2023-05-31 10:00:00から、2023-05-30 20:00:00に変更されてしまっていることが分かります。

対象カラムのTIMESTAMPの種類と
CLIENT_TIMESTAMP_TYPE_MAPPINGの設定値を合わせた場合

それでは次に対象カラムのTIMESTAMPの種類と
CLIENT_TIMESTAMP_TYPE_MAPPINGの設定値を合わせた場合はどうなるか見てみましょう。次は下記の条件で時刻データを登録してみます。

  • TIMESTAMP:TIMESTAMP_NTZ
  • CLIENT_TIMESTAMP_TYPE_MAPPING:TIMESTAMP_NTZ
  • インプットデータ:2023-05-31 10:00:00

今度はきちんと本来の2023-05-31 10:00:00で登録されていることが分かります。

おわりに

今回はCData Snowflake Drivers で時刻データを取り扱う際の注意点を説明しました。時刻データを連携した際に値がズレてしまわないように、今回ご案内した内容を元に事前にご確認いただければと思います。CData Snowflake Drivers は30日間無料でお使いいただけます。Snowflake との連携をご検討の方はぜひお試しください。  

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。