Skip to content

Instantly share code, notes, and snippets.

View BigDataDave1's full-sized avatar

BigDataDave BigDataDave1

View GitHub Profile
@BigDataDave1
BigDataDave1 / workdays_create.sql
Created November 21, 2020 23:22
Workdays Gist Create Table
--Create Table of Dates
CREATE OR REPLACE TABLE TBL_DATES (
ID Integer,
DATE_START Date,
DATE_END Date,
INSERT_DTS Timestamp_ltz(6)
);
--Insert Dates 1/1/2019 to 12/31/2020
@BigDataDave1
BigDataDave1 / workdays_udf.sql
Last active November 21, 2020 23:25
Workdays UDF SQL
--Create a UDF to Find Holiday Counts
CREATE OR REPLACE FUNCTION UDF_HOLIDAYS(DATESTART Date, DATEEND Date)
RETURNS INTEGER
AS
$$
SELECT COUNT(*) FROM TBL_HOLIDAYS
WHERE DATE_HOLIDAY BETWEEN DATESTART AND DATEEND
$$;
--Test UDF
@BigDataDave1
BigDataDave1 / dyanmic_unload.sql
Last active September 27, 2022 19:21
Dynamic Unload Path for Snowflake
--Put it Into a Stored Procedure
CREATE OR REPLACE PROCEDURE SP_UNLOAD_DYNAMIC()
RETURNS STRING
LANGUAGE JAVASCRIPT
EXECUTE AS CALLER
AS
$$
//Unload JSON to Stage
//COPY INTO OBJECT CONSTRUCT(*)
//With Dynamic Pathing with JS MS TS for different unload naming convention
@BigDataDave1
BigDataDave1 / dynamic_unload_path.sql
Created November 22, 2020 00:02
Dynamic Unload with Path Variable
--SP for Feeding in Dynamic Path Variable
CREATE OR REPLACE PROCEDURE SP_UNLOAD_DYNAMIC_PATH(PATH STRING)
RETURNS STRING
LANGUAGE JAVASCRIPT
EXECUTE AS CALLER
AS
$$
//Unload JSON to Stage
//COPY INTO OBJECT CONSTRUCT(*)
//With my path input variable unload naming convention
@BigDataDave1
BigDataDave1 / unloading_example.sql
Created November 23, 2020 20:28
Snowflake Unloading Example
--Context Setting
use database sales;
use schema public;
use warehouse load_wh;
--Warehouse Params
show warehouses like 'LOAD_WH';
show parameters for warehouse load_wh;
alter warehouse load_wh set MAX_CONCURRENCY_LEVEL = 4;
@BigDataDave1
BigDataDave1 / query01_10things.sql
Created November 23, 2020 21:53
10 Things Every Snowflake Admin Should be Doing to Optimize Credits Query 01 - Auto Resume
SHOW WAREHOUSES;
SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
WHERE "auto_resume" = FALSE;
@BigDataDave1
BigDataDave1 / query02_10things.sql
Created November 23, 2020 21:54
10 Things Every Snowflake Admin Should be Doing to Optimize Credits Query 02 - Auto Suspend
SHOW WAREHOUSES;
SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
WHERE "auto_suspend" IS NULL;
@BigDataDave1
BigDataDave1 / query03_10things.sql
Created November 23, 2020 22:08
10 Things Every Snowflake Admin Should be Doing to Optimize Credits Query 03 – Long Timeouts
SHOW WAREHOUSES;
SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
WHERE "auto_suspend" > 600; --Your Threshold in Seconds
--SQL Pro, just do all 3
SHOW WAREHOUSES;
SELECT * FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
WHERE "auto_resume" = FALSE OR
"auto_suspend" IS NULL OR
"auto_suspend" > 600;
@BigDataDave1
BigDataDave1 / query04_10things.sql
Created November 23, 2020 22:08
10 Things Every Snowflake Admin Should be Doing to Optimize Credits Query 04 – Account Statement Timeouts
ALTER WAREHOUSE LOAD_WH SET STATEMENT_TIMEOUT_IN_SECONDS = 3600;
SHOW PARAMETERS IN WAREHOUSE LOAD_WH;
@BigDataDave1
BigDataDave1 / query05_10things.sql
Created November 23, 2020 22:09
10 Things Every Snowflake Admin Should be Doing to Optimize Credits Query 05 – Warehouse Credit Usage Greater Than 7 Day Average
SELECT WAREHOUSE_NAME, DATE(START_TIME) AS DATE,
SUM(CREDITS_USED) AS CREDITS_USED,
AVG(SUM(CREDITS_USED)) OVER (PARTITION BY WAREHOUSE_NAME ORDER BY DATE ROWS 7 PRECEDING) AS CREDITS_USED_7_DAY_AVG,
(TO_NUMERIC(SUM(CREDITS_USED)/CREDITS_USED_7_DAY_AVG*100,10,2)-100)::STRING || '%' AS VARIANCE_TO_7_DAY_AVERAGE
FROM "SNOWFLAKE"."ACCOUNT_USAGE"."WAREHOUSE_METERING_HISTORY"
GROUP BY DATE, WAREHOUSE_NAME
ORDER BY DATE DESC;