0% 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.

Uploaded by

ravitthakurr.97
Copyright
© © All Rights Reserved
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% 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.

Uploaded by

ravitthakurr.97
Copyright
© © All Rights Reserved
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;

You might also like