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
タグ: Snowflake