Snowflake の Task を使って定期的に Azure から CSV をインポートしてみた

Snowflake 自体に定期実行する何かがあるのか調べてみたところ、Task を作って SQL ステートメントを実行できるようです。そこで今回は、Azure ストレージ上にある CSV ファイルを定期的にテーブルに取り込む検証をしてみました。

Azure ストレージ上の CSV ファイル

Snowflake で CSV インポートの準備と設定

-- DB 作成
create or replace database mydatabase;

-- Table 作成
create or replace table mycsvtable (
  my_name string,
  my_type string);

-- CSV の設定
CREATE OR REPLACE FILE FORMAT mycsvformat
   TYPE = 'CSV'
   FIELD_DELIMITER = ','
   SKIP_HEADER = 1;

-- CSV の取り込み設定
CREATE OR REPLACE STAGE my_azure_stage
  URL='azure://mnrsftest.blob.core.windows.net/data/'
  CREDENTIALS=(AZURE_SAS_TOKEN='?sv=**************************')
  FILE_FORMAT = mycsvformat;

-- CSV の取り込み実行
COPY INTO mycsvtable
  FROM @my_azure_stage/test.csv
  ON_ERROR = 'skip_file';

Snowflake Task の作成と有効化

-- Task の作成
CREATE OR REPLACE TASK my_task
  SCHEDULE = 'USING CRON  */2 * * * * Asia/Tokyo'
AS
BEGIN
  truncate table mycsvtable;
  COPY INTO mycsvtable FROM @my_azure_stage/test.csv ON_ERROR = 'skip_file';
END

-- Task を有効化
alter task my_task resume;

Snowflake Task の実行結果

Table への CSV 取り込み結果

参考

https://docs.snowflake.com/ja/sql-reference/sql/create-task

タグ: