在 Snowflake 進行資料管線自動化
Emily Melhuish
Technical Curriculum Developer, Snowflake
範例:
-- 今天的手動流程(脆弱)
CALL logistics.refresh_ops_dashboard();
CREATE TASK logistics.refresh_dashboard
WAREHOUSE = harbr_wh
SCHEDULE = 'USING CRON 0 6 * * * UTC'
AS CALL logistics.refresh_ops_dashboard();
CREATE OR REPLACE TASK transform_delivery_summary
WAREHOUSE = harbr_wh
SCHEDULE = 'USING CRON 5 * * * * UTC'
AS INSERT INTO delivery_summary
SELECT shipment_id, status, updated_at
FROM delivery_events
WHERE processed = FALSE;
以 Warehouse 為基礎
CREATE TASK my_task
WAREHOUSE = harbr_wh -- named warehouse
SCHEDULE = '5 MINUTE'
AS INSERT INTO ...;
無伺服器(Serverless)
WAREHOUSE 子句CREATE TASK my_serverless_task
-- no WAREHOUSE clause
SCHEDULE = '5 MINUTE'
AS INSERT INTO ...;

AFTER 宣告前置任務
-- 啟用任務
ALTER TASK mytask RESUME;
-- 暫停任務
ALTER TASK mytask SUSPEND;
-- 立即執行任務
EXECUTE TASK mytask SUSPEND;

CREATE OR REPLACE TASK logistics.process_delivery_events
WAREHOUSE = compute_wh
SCHEDULE = '5 minute'
WHEN SYSTEM$STREAM_HAS_DATA('logistics.delivery_events_stream')
AS
INSERT INTO logistics.processed_events
SELECT * FROM logistics.delivery_events_stream;
在 Snowflake 進行資料管線自動化