From b49931ec6ae874d5745116c2d02ba00a78f6e3aa Mon Sep 17 00:00:00 2001 From: Agnes Kiss Date: Wed, 12 Oct 2022 09:42:11 +0100 Subject: [PATCH] Snowflake Web: Optimise partition pruning (Close #140) --- .../standard/01-base/01-main/03-sessions-to-process.sql | 8 ++++++-- .../sql/standard/01-base/01-main/06-events-this-run.sql | 9 +++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/web/v1/snowflake/sql-runner/sql/standard/01-base/01-main/03-sessions-to-process.sql b/web/v1/snowflake/sql-runner/sql/standard/01-base/01-main/03-sessions-to-process.sql index 33a4b84..58a4e63 100644 --- a/web/v1/snowflake/sql-runner/sql/standard/01-base/01-main/03-sessions-to-process.sql +++ b/web/v1/snowflake/sql-runner/sql/standard/01-base/01-main/03-sessions-to-process.sql @@ -15,6 +15,10 @@ */ +-- Use variable to set scan limits + +SET (LOWER_LIMIT, UPPER_LIMIT) = (SELECT lower_limit, upper_limit FROM {{.scratch_schema}}.base_new_events_limits{{.entropy}}); + -- Get sessionids for new events CREATE OR REPLACE TABLE {{.scratch_schema}}.base_sessions_to_process{{.entropy}} AS ( @@ -29,8 +33,8 @@ AS ( ON a.event_id = b.event_id WHERE b.event_id IS NULL - AND a.collector_tstamp >= (SELECT lower_limit FROM {{.scratch_schema}}.base_new_events_limits{{.entropy}}) - AND a.collector_tstamp <= (SELECT upper_limit FROM {{.scratch_schema}}.base_new_events_limits{{.entropy}}) + AND a.collector_tstamp >= $LOWER_LIMIT + AND a.collector_tstamp <= $UPPER_LIMIT AND a.domain_sessionid IS NOT NULL AND TIMESTAMPDIFF(DAY, a.dvce_created_tstamp, a.dvce_sent_tstamp) <= {{or .days_late_allowed 3}} diff --git a/web/v1/snowflake/sql-runner/sql/standard/01-base/01-main/06-events-this-run.sql b/web/v1/snowflake/sql-runner/sql/standard/01-base/01-main/06-events-this-run.sql index 865be64..41105ab 100644 --- a/web/v1/snowflake/sql-runner/sql/standard/01-base/01-main/06-events-this-run.sql +++ b/web/v1/snowflake/sql-runner/sql/standard/01-base/01-main/06-events-this-run.sql @@ -18,6 +18,7 @@ CREATE OR REPLACE PROCEDURE {{.scratch_schema}}.create_events_this_run() RETURNS VARCHAR LANGUAGE JAVASCRIPT + EXECUTE AS CALLER AS $$ @@ -37,7 +38,11 @@ CREATE OR REPLACE PROCEDURE {{.scratch_schema}}.create_events_this_run() new_col = new_col + ','; } + var sql_stmt2 =`SET (LOWER_LIMIT, UPPER_LIMIT) = (SELECT lower_limit, upper_limit FROM {{.scratch_schema}}.base_run_limits{{.entropy}});` + snowflake.createStatement({sqlText: sql_stmt2}).execute(); + var fin_query=` + CREATE OR REPLACE TABLE {{.scratch_schema}}.events_this_run{{.entropy}} AS SELECT @@ -45,8 +50,8 @@ CREATE OR REPLACE PROCEDURE {{.scratch_schema}}.create_events_this_run() FROM {{.input_schema}}.events AS a INNER JOIN {{.scratch_schema}}.base_sessions_to_include{{.entropy}} AS b ON a.domain_sessionid = b.session_id - WHERE a.collector_tstamp >= (SELECT lower_limit FROM {{.scratch_schema}}.base_run_limits{{.entropy}}) - AND a.collector_tstamp <= (SELECT upper_limit FROM {{.scratch_schema}}.base_run_limits{{.entropy}});`; + WHERE a.collector_tstamp >= $LOWER_LIMIT + AND a.collector_tstamp <= $UPPER_LIMIT;`; snowflake.createStatement({sqlText: fin_query}).execute();