The document outlines SQL queries and a Python script used for two data processing pipelines in Snowflake. The first pipeline involves creating a database and schema, loading stock data into a table, and inserting records for three symbols. The second pipeline creates a view for stock data, builds a machine learning forecast model, evaluates its metrics, makes predictions, and consolidates actual and forecasted data into a final table.
Download as TXT, PDF, TXT or read online on Scribd
0 ratings0% found this document useful (0 votes)
2 views
sql_lab1
The document outlines SQL queries and a Python script used for two data processing pipelines in Snowflake. The first pipeline involves creating a database and schema, loading stock data into a table, and inserting records for three symbols. The second pipeline creates a view for stock data, builds a machine learning forecast model, evaluates its metrics, makes predictions, and consolidates actual and forecasted data into a final table.
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2
-- The following sql queries are run along with python script
-- For fist pipeline - 226_lab1_etl
-- loading extracted data into snowflake table CREATE DATABASE dev; CREATE SCHEMA dev.raw;
BEGIN;
Create the target table if it doesn't exist
CREATE TABLE IF NOT EXISTS dev.raw.stock ( symbol STRING, date TIMESTAMP, open NUMBER(38, 4), high NUMBER(38, 4), low NUMBER(38, 4), close NUMBER(38, 4), volume NUMBER(38, 0), PRIMARY KEY (symbol, date) );
--Deleting all existing records in the target table
DELETE FROM dev.raw.stock;
-- Inserting records into the table
-- The following line is just a sample. INSERT INTO dev.raw.stock (symbol, date, open, high, low, close, volume) VALUES ('JPM', ''2024-06-17', 190.2593, 192.3243, 189.4332, 191.7343, 8725400) --- All the records for 3 symbols of alst 180 days were inserted using python script.
COMMIT; -- rollback if something goes wrong --ROLLBACK;
-- For SECOND pipeline - train and predict
-- CREATING VIEW FOR STOCK DATA. CREATE OR REPLACE VIEW dev.raw.stock_view AS SELECT CAST(DATE AS TIMESTAMP_NTZ) AS DATE, CLOSE, SYMBOL FROM dev.raw.stock;
LET x := SQLID; CREATE OR REPLACE TABLE dev.raw.stock_forecast AS SELECT * FROM TABLE(RESULT_SCAN(:x));
-- CREATING FINAL TABLE THAT CONTAINS ACTUAL AND FORECAST DATA
CREATE TABLE IF NOT EXISTS dev.raw.final_data AS SELECT SYMBOL, DATE, CLOSE AS actual, NULL AS forecast, NULL AS lower_bound, NULL AS upper_bound FROM dev.raw.stock
UNION ALL
SELECT REPLACE(series, '"', '') AS SYMBOL, ts AS DATE, NULL AS actual, forecast, lower_bound, upper_bound FROM dev.raw.stock_forecast;