From c170de5d95b78cb7ce208df4b693b7e1466987e1 Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 11 Apr 2022 23:58:09 -0400 Subject: [PATCH] adding distinct gaps buffered look back test --- ...uence_distinct_gaps_buffered_look_back.sql | 61 +++++++++++++++++++ ...__transactions__block_id-assert_no_gap.sql | 1 + 2 files changed, 62 insertions(+) create mode 100644 macros/tests/sequence_distinct_gaps_buffered_look_back.sql create mode 100644 tests/algorand/silver/silver_algorand__transactions__block_id-assert_no_gap.sql diff --git a/macros/tests/sequence_distinct_gaps_buffered_look_back.sql b/macros/tests/sequence_distinct_gaps_buffered_look_back.sql new file mode 100644 index 00000000..d525f9da --- /dev/null +++ b/macros/tests/sequence_distinct_gaps_buffered_look_back.sql @@ -0,0 +1,61 @@ +{% macro sequence_distinct_gaps_buffered_look_back( + table, + partition_by, + column, + delayed_column, + delayed_period + ) %} + {%- set partition_sql = partition_by | join(", ") -%} + {%- set previous_column = "prev_" ~ column -%} + WITH source AS ( + SELECT + {{ partition_sql + "," if partition_sql }} + {{ column }}, + LAG( + {{ column }}, + 1 + ) over ( + {{ "PARTITION BY " ~ partition_sql if partition_sql }} + ORDER BY + {{ column }} ASC + ) AS {{ previous_column }}, + LAG( + {{ delayed_column }}, + 1 + ) over ( + {{ "PARTITION BY " ~ partition_sql if partition_sql }} + ORDER BY + {{ column }} ASC + ) AS {{ delayed_column }} + FROM + ( + SELECT + DISTINCT {{ column }}, + MAX( + {{ delayed_column }} + ) AS {{ delayed_column }} + FROM + {{ table }} + GROUP BY + {{ column }} + ) + ) +SELECT + {{ partition_sql + "," if partition_sql }} + {{ previous_column }}, + {{ column }}, + {{ column }} - {{ previous_column }} + - 1 AS gap +FROM + source +WHERE + {{ column }} - {{ previous_column }} <> 1 + AND {{ delayed_column }} < ( + SELECT + MAX( + {{ delayed_column }} + ) + FROM + {{ this }} + ) - INTERVAL '{{ delayed_period }}' +{% endmacro %} diff --git a/tests/algorand/silver/silver_algorand__transactions__block_id-assert_no_gap.sql b/tests/algorand/silver/silver_algorand__transactions__block_id-assert_no_gap.sql new file mode 100644 index 00000000..eaeaca0f --- /dev/null +++ b/tests/algorand/silver/silver_algorand__transactions__block_id-assert_no_gap.sql @@ -0,0 +1 @@ +{{ sequence_distinct_gaps_buffered_look_back(ref('silver_algorand__transactions'), [], "block_id", "_inserted_timestamp", "15 HOURS") }}