Snowflake担当のdanboll_lifeです。
今回は、Snowflakeにデータを格納する際に自動で書き込み日時を保存する方法について説明していきたいと思います。
はじめに
Snowflakeにデータレイクやデータマートなどデータを格納する際に、格納した日時を記録する必要な場合があるかと思います。
ETLを行う際、こちらのデータを格納するために処理を増やさなければならない場合があります。
そんな時、今回紹介するSQL文を駆使することによってそんな手間を省くことができます。
SQL文について紹介していきたいと思います。
Snowflake SQL文
さっそく、Snowflakeのテーブルを作成していきたいと思います。
USE ROLE [任意のロール];
USE WAREHOUSE [任意のウェアハウス];
USE DATABASE [任意のデータベース];
USE SCHEMA [任意のスキーマ];
CREATE or REPLACE TABLE TIMEZONE_TEST (
DATA NUMBER,
TIMESTAMP_SNOWFLAKE TIMESTAMP_NTZ DEFAULT CONVERT_TIMEZONE('Asia/Tokyo',CURRENT_TIMESTAMP)::timestamp_ntz
);
SQL文の解説
テーブルのカラム設定の2行目にあります、SQLが自動で作成されるTimeStampに必要な命令になります。
TIMESTAMP_NTZにつきましては、下記の記事を一部参考にしていただければと存じます。
今回注目すべきは、TIMESTAMP_NTZの後ろに記載された、DEFAULT句になります。
DEFAULT句が記載されている場合、DEFAULT句以下に記載されているスカラー値や定数、シーケンス参照値を返します。
DEFAULT句内に記述されたCONVERT_TIMEZONEについては、公式ドキュメント を参照していただければと思います。
簡潔にまとめますと、TIMESTAMP型のデータを任意のTIMEZONEに変更させることができます。
格納データ準備
Snowflakeにデータを書き込むツールとして、今回はAlteryxDesignerを用いていきたいと思います。
データは簡単に1~10のデータを書き込みたいと思います。
作成したワークフローは下図になります。
TIMESTAMP_SNOWFLAKEカラムは自動的に作成されるため、今回の入力データとしては作成しません。
実行結果
AlteryxDesignerによってSnowflakeに書き込まれたデータをみてみましょう。
きちんとSnowflake上に1-10までのデータと設定していなかったTIMESTAMPデータが自動で追加されていることが確認できました。
おわりに
Snowflakeにデータを書き込む際に自動でデータ格納時間を記録する方法について説明してきました。
TIMESTAMP_NTZ DEFAULT CONVERT_TIMEZONE('Asia/Tokyo',CURRENT_TIMESTAMP)::timestamp_ntz
カラム名は任意の名前になりますが、データ型・DEFAULT句はこちらの値を参照していただければと思います。こちらの値を参照していただければ、すぐにでもデータ格納時にTIMESTAMPを追加することができます。
ぜひ、参考にしていただければと思います。