2022-07-12 16:14:13 +00:00
|
|
|
{% 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_name }},
|
|
|
|
|
{{ column_name }} - {{ previous_column }}
|
|
|
|
|
- 1 AS gap
|
|
|
|
|
FROM
|
|
|
|
|
source
|
|
|
|
|
WHERE
|
|
|
|
|
{{ column_name }} - {{ previous_column }} <> 1
|
|
|
|
|
ORDER BY
|
|
|
|
|
gap DESC {% endtest %}
|
2024-03-19 15:16:28 +00:00
|
|
|
|
|
|
|
|
{% test hour_sequence_gaps(
|
|
|
|
|
model,
|
|
|
|
|
partition_by,
|
|
|
|
|
column_name,
|
|
|
|
|
filter
|
|
|
|
|
) %}
|
|
|
|
|
{%- set partition_sql = partition_by | join(", ") -%}
|
|
|
|
|
{%- set previous_column = "prev_" ~ column_name -%}
|
|
|
|
|
WITH base_source AS (
|
|
|
|
|
SELECT
|
|
|
|
|
{{ 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 }}
|
|
|
|
|
{% if filter %}
|
|
|
|
|
WHERE {{ filter }}
|
|
|
|
|
{% endif %}
|
|
|
|
|
)
|
|
|
|
|
SELECT
|
|
|
|
|
{{ partition_sql }},
|
|
|
|
|
{{ previous_column }},
|
|
|
|
|
{{ column_name }},
|
|
|
|
|
DATEDIFF(
|
|
|
|
|
HOUR,
|
|
|
|
|
{{ previous_column }},
|
|
|
|
|
{{ column_name }}
|
|
|
|
|
) - 1 AS gap
|
|
|
|
|
FROM
|
|
|
|
|
base_source
|
|
|
|
|
WHERE
|
|
|
|
|
gap > 0
|
|
|
|
|
ORDER BY
|
|
|
|
|
gap DESC
|
|
|
|
|
{% endtest %}
|
2024-04-01 19:58:38 +00:00
|
|
|
|
|
|
|
|
{% test price_hour_sequence_gaps(
|
|
|
|
|
model,
|
|
|
|
|
partition_by_1,
|
|
|
|
|
partition_by_2,
|
|
|
|
|
column_name,
|
|
|
|
|
filter
|
|
|
|
|
) %}
|
|
|
|
|
{%- set previous_column = "prev_" ~ column_name -%}
|
|
|
|
|
WITH base_source AS (
|
|
|
|
|
SELECT
|
2024-04-05 20:58:51 +00:00
|
|
|
{{ partition_by_1 }}
|
|
|
|
|
{% if partition_by_2 %}, {{ partition_by_2 }} {% endif %},
|
2024-04-01 19:58:38 +00:00
|
|
|
{{ column_name }},
|
|
|
|
|
LAG(
|
|
|
|
|
{{ column_name }},
|
|
|
|
|
1
|
|
|
|
|
) over (
|
2024-04-05 20:58:51 +00:00
|
|
|
PARTITION BY LOWER({{ partition_by_1 }}) {% if partition_by_2 %}, {{ partition_by_2 }} {% endif %}
|
2024-04-01 19:58:38 +00:00
|
|
|
ORDER BY
|
|
|
|
|
{{ column_name }} ASC
|
|
|
|
|
) AS {{ previous_column }}
|
|
|
|
|
FROM
|
|
|
|
|
{{ model }}
|
|
|
|
|
{% if filter %}
|
|
|
|
|
WHERE {{ filter }}
|
|
|
|
|
{% endif %}
|
|
|
|
|
)
|
|
|
|
|
SELECT
|
2024-04-05 20:58:51 +00:00
|
|
|
{{ partition_by_1 }}
|
|
|
|
|
{% if partition_by_2 %}, {{ partition_by_2 }} {% endif %},
|
2024-04-01 19:58:38 +00:00
|
|
|
{{ previous_column }},
|
|
|
|
|
{{ column_name }},
|
|
|
|
|
DATEDIFF(
|
|
|
|
|
HOUR,
|
|
|
|
|
{{ previous_column }},
|
|
|
|
|
{{ column_name }}
|
|
|
|
|
) - 1 AS gap
|
|
|
|
|
FROM
|
|
|
|
|
base_source
|
|
|
|
|
WHERE
|
|
|
|
|
gap > 0
|
|
|
|
|
ORDER BY
|
|
|
|
|
gap DESC
|
|
|
|
|
{% endtest %}
|