From c885a3a28fe994a49b6c00411bb85d97a1902d15 Mon Sep 17 00:00:00 2001 From: Eric Laurello Date: Tue, 23 May 2023 11:27:20 -0400 Subject: [PATCH] block gaps --- macros/tests/sequence_gaps.sql | 55 +++++++++++++++----------------- models/silver/silver__blocks.yml | 5 +++ 2 files changed, 31 insertions(+), 29 deletions(-) diff --git a/macros/tests/sequence_gaps.sql b/macros/tests/sequence_gaps.sql index 84a9aa9..9425003 100644 --- a/macros/tests/sequence_gaps.sql +++ b/macros/tests/sequence_gaps.sql @@ -1,37 +1,34 @@ -{% macro sequence_gaps( - table, - partition_by, - column - ) %} - {%- 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 }} - FROM - {{ table }} - WHERE - block_timestamp::date <= current_date - 1 - ) +{% test sequence_gaps( + model, + partition_by, + column_name +) %} +{%- set partition_sql = partition_by | join(", ") -%} +{%- set previous_column = "prev_" ~ column_name -%} +WITH source AS ( + SELECT + {{ partition_sql + "," if partition_sql }} + {{ column_name }}, + LAG( + {{ column_name }}, + 1 + ) over ( + {{ "PARTITION BY " ~ partition_sql if partition_sql }} + ORDER BY + {{ column_name }} ASC + ) AS {{ previous_column }} + FROM + {{ model }} +) SELECT {{ partition_sql + "," if partition_sql }} {{ previous_column }}, - {{ column }}, - {{ column }} - {{ previous_column }} + {{ column_name }}, + {{ column_name }} - {{ previous_column }} - 1 AS gap FROM source WHERE - {{ column }} - {{ previous_column }} <> 1 + {{ column_name }} - {{ previous_column }} <> 1 ORDER BY - gap DESC -{% endmacro %} + gap DESC {% endtest %} diff --git a/models/silver/silver__blocks.yml b/models/silver/silver__blocks.yml index bf60a4d..1aaadab 100644 --- a/models/silver/silver__blocks.yml +++ b/models/silver/silver__blocks.yml @@ -7,6 +7,11 @@ models: combination_of_columns: - CHAIN_ID - BLOCK_ID + - sequence_gaps: + column_name: BLOCK_ID + config: + severity: error + error_if: ">10" columns: - name: BLOCK_ID description: "{{ doc('block_id') }}"