The document outlines the creation of a Snowflake task named 'all_data_changes' that automates data updates in the 'SALES_FINAL_TABLE' based on changes in the 'SALES_STREAM'. It includes conditions for deleting, updating, and inserting records depending on the metadata action. Additionally, it provides examples of data changes in the 'SALES_RAW_STAGING' table and instructions to verify the results and task history.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
5 views2 pages
Streams & Tasks
The document outlines the creation of a Snowflake task named 'all_data_changes' that automates data updates in the 'SALES_FINAL_TABLE' based on changes in the 'SALES_STREAM'. It includes conditions for deleting, updating, and inserting records depending on the metadata action. Additionally, it provides examples of data changes in the 'SALES_RAW_STAGING' table and instructions to verify the results and task history.
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2
------- Automatate the updates using tasks --
CREATE OR REPLACE TASK all_data_changes
WAREHOUSE = COMPUTE_WH SCHEDULE = '1 MINUTE' WHEN SYSTEM$STREAM_HAS_DATA('SALES_STREAM') AS merge into SALES_FINAL_TABLE F -- Target table to merge changes from source table USING ( SELECT STRE.*,ST.location,ST.employees FROM SALES_STREAM STRE JOIN STORE_TABLE ST ON STRE.store_id = ST.store_id ) S ON F.id=S.id when matched -- DELETE condition and S.METADATA$ACTION ='DELETE' and S.METADATA$ISUPDATE = 'FALSE' then delete when matched -- UPDATE condition and S.METADATA$ACTION ='INSERT' and S.METADATA$ISUPDATE = 'TRUE' then update set f.product = s.product, f.price = s.price, f.amount= s.amount, f.store_id=s.store_id when not matched and S.METADATA$ACTION ='INSERT' then insert (id,product,price,store_id,amount,employees,location) values (s.id, s.product,s.price,s.store_id,s.amount,s.employees,s.location);
ALTER TASK all_data_changes RESUME;
SHOW TASKS;
// Change data
INSERT INTO SALES_RAW_STAGING VALUES (11,'Milk',1.99,1,2);
INSERT INTO SALES_RAW_STAGING VALUES (12,'Chocolate',4.49,1,2); INSERT INTO SALES_RAW_STAGING VALUES (13,'Cheese',3.89,1,1);
UPDATE SALES_RAW_STAGING SET PRODUCT = 'Chocolate bar' WHERE PRODUCT ='Chocolate';
DELETE FROM SALES_RAW_STAGING
WHERE PRODUCT = 'Mango';
// Verify results SELECT * FROM SALES_RAW_STAGING; SELECT * FROM SALES_STREAM;
SELECT * FROM SALES_FINAL_TABLE;
// Verify the history
select * from table(information_schema.task_history()) order by name asc,scheduled_time desc;