0% found this document useful (0 votes)
24 views3 pages

Streams Tasks

The document demonstrates how to create a stream from a source table to capture changes and insert them into a target table. It creates sample tables, inserts data, defines a stream on the source table, and creates a task to periodically insert stream data into the target table.

Uploaded by

clouditlab9
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)
24 views3 pages

Streams Tasks

The document demonstrates how to create a stream from a source table to capture changes and insert them into a target table. It creates sample tables, inserts data, defines a stream on the source table, and creates a task to periodically insert stream data into the target table.

Uploaded by

clouditlab9
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/ 3

-------------------- Stream example: INSERT ------------------------

CREATE OR REPLACE DATABASE STREAMS_DB;

-- Create example table 1


create or replace table sales_staging(
id varchar,
product varchar,
price varchar,
amount varchar,
store_id varchar);

-- insert values
insert into sales_staging
values
(1,'Banana',1.99,1,1),
(2,'Lemon',0.99,1,1),
(3,'Apple',1.79,1,2),
(4,'Orange Juice',1.89,1,2),
(5,'Cereals',5.98,2,1);

-- create second table


create or replace table store_table(
store_id number,
location varchar,
employees number);

INSERT INTO STORE_TABLE VALUES(1,'Chicago',33);


INSERT INTO STORE_TABLE VALUES(2,'London',12);

-- Create final input table

create or replace table sales_final(


id int,
product varchar,
price number,
amount int,
store_id int,
location varchar,
employees int);

-- Insert into final table


INSERT INTO sales_final
SELECT
SA.id,
SA.product,
SA.price,
SA.amount,
ST.STORE_ID,
ST.LOCATION,
ST.EMPLOYEES
FROM SALES_STAGING SA
JOIN STORE_TABLE ST ON ST.STORE_ID=SA.STORE_ID ;

SELECT * FROM sales_final;


-- Create a stream object
create or replace stream sales_stream on table sales_staging;

SHOW STREAMS;
DESC STREAM sales_stream;

-- Get changes on data using stream (empty)


select * from sales_stream;
-- Query table
select * from sales_staging;

-- insert values
insert into sales_staging
values
(6,'Mango',1.99,1,2),
(7,'Garlic',0.99,1,1);

-- Consume stream object


INSERT INTO sales_final
SELECT
SA.id,
SA.product,
SA.price,
SA.amount,
ST.STORE_ID,
ST.LOCATION,
ST.EMPLOYEES
FROM SALES_STREAM SA
JOIN STORE_TABLE ST ON ST.STORE_ID=SA.STORE_ID ;

-- Get changes on data using stream (INSERTS)


select * from sales_stream;

// Combine streams and tasks

CREATE OR REPLACE TASK sales_stream_task


WAREHOUSE = COMPUTE_WH
SCHEDULE = '1 MINUTE'
WHEN SYSTEM$STREAM_HAS_DATA('SALES_STREAM')
AS
INSERT INTO sales_final
SELECT
SA.id,
SA.product,
SA.price,
SA.amount,
ST.STORE_ID,
ST.LOCATION,
ST.EMPLOYEES
FROM SALES_STREAM SA
JOIN STORE_TABLE ST ON ST.STORE_ID=SA.STORE_ID ;

ALTER TASK sales_stream_task RESUME;


SHOW TASKS;

// Change data

INSERT INTO SALES_STAGING VALUES (11,'Milk',1.99,1,2);


INSERT INTO SALES_STAGING VALUES (12,'Chocolate',4.49,1,2);
INSERT INTO SALES_STAGING VALUES (13,'Cheese',3.89,1,1);

// Verify results
SELECT * FROM SALES_STAGING;

SELECT * FROM SALES_STREAM;

SELECT * FROM SALES_FINAL;

You might also like