Skip to content

Commit 46f373d

Browse files
authored
Merge pull request #317 from ScalefreeCOM/179-snapshot-control-v0-implement-end_date
179 snapshot control v0 implement end date
2 parents 897d6de + 1fb2080 commit 46f373d

File tree

9 files changed

+56
-9
lines changed

9 files changed

+56
-9
lines changed

macros/tables/bigquery/control_snap_v0.sql

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
{%- macro default__control_snap_v0(start_date, daily_snapshot_time, sdts_alias, end_date=none) -%}
22

3+
{% if datavault4dbt.is_nothing(end_date) %}
4+
{% set end_date = 'CURRENT_TIMESTAMP()' %}
5+
{% else %}
6+
{% set end_date = "'"~end_date~"'" %}
7+
{% endif %}
8+
39
{%- set timestamp_format = datavault4dbt.timestamp_format() -%}
410

511
{%- if not datavault4dbt.is_something(sdts_alias) -%}
@@ -20,7 +26,7 @@ initial_timestamps AS (
2026
INTERVAL EXTRACT(MINUTE FROM TIME '{{ daily_snapshot_time }}') MINUTE),
2127
TIMESTAMP_ADD(
2228
TIMESTAMP_ADD(
23-
TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), DAY),
29+
TIMESTAMP_TRUNC({{ end_date }}, DAY),
2430
INTERVAL EXTRACT(HOUR FROM TIME '{{ daily_snapshot_time }}') HOUR),
2531
INTERVAL EXTRACT(MINUTE FROM TIME '{{ daily_snapshot_time }}') MINUTE),
2632
INTERVAL 1 DAY)) AS sdts

macros/tables/databricks/control_snap_v0.sql

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
{%- macro databricks__control_snap_v0(start_date, daily_snapshot_time, sdts_alias, end_date=none) -%}
22

3+
{% if datavault4dbt.is_nothing(end_date) %}
4+
{% set end_date = 'CURRENT_TIMESTAMP' %}
5+
{% else %}
6+
{% set end_date = "'"~end_date~"'" %}
7+
{% endif %}
8+
39
{%- set timestamp_format = datavault4dbt.timestamp_format() -%}
410

511
{%- if not datavault4dbt.is_something(sdts_alias) -%}
@@ -9,7 +15,7 @@
915
WITH
1016

1117
date_array as(
12-
select sequence(to_timestamp('{{ start_date }} {{ daily_snapshot_time }}'), to_timestamp(current_date()+1), interval 1 day) AS sdts
18+
select sequence(to_timestamp('{{ start_date }} {{ daily_snapshot_time }}'), to_timestamp(to_date({{ end_date }})+1), interval 1 day) AS sdts
1319
),
1420

1521
cte as(
@@ -23,7 +29,7 @@ initial_timestamps AS (
2329
FROM
2430
cte
2531
WHERE
26-
sdts <= CURRENT_TIMESTAMP
32+
sdts <= to_date({{ end_date }})+1
2733
{%- if is_incremental() %}
2834
AND sdts > (SELECT MAX({{ sdts_alias }}) FROM {{ this }})
2935
{%- endif %}

macros/tables/exasol/control_snap_v0.sql

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
{%- macro exasol__control_snap_v0(start_date, daily_snapshot_time, sdts_alias, end_date=none) -%}
22

3+
34
{%- set timestamp_format = datavault4dbt.timestamp_format() -%}
5+
6+
{% if datavault4dbt.is_nothing(end_date) %}
7+
{% set end_date = 'CURRENT_DATE()' %}
8+
{% else %}
9+
{% set end_date = datavault4dbt.string_to_timestamp(timestamp_format, end_date) %}
10+
{% endif %}
11+
412
{%- set date_format_std = 'YYYY-mm-dd' -%}
513
{%- set daily_snapshot_time = '0001-01-01 ' ~ daily_snapshot_time -%}
614
{%- set last_cte = '' -%}
@@ -12,7 +20,7 @@ initial_timestamps AS
1220
EXTRACT(MINUTE FROM {{ datavault4dbt.string_to_timestamp(timestamp_format, daily_snapshot_time) }})
1321
), level-1) as sdts
1422
from dual
15-
connect by level <= days_between(ADD_MINUTES(ADD_HOURS(CURRENT_DATE(), EXTRACT(HOUR FROM {{ datavault4dbt.string_to_timestamp(timestamp_format, daily_snapshot_time) }}) ),
23+
connect by level <= days_between(ADD_MINUTES(ADD_HOURS({{ end_date }}, EXTRACT(HOUR FROM {{ datavault4dbt.string_to_timestamp(timestamp_format, daily_snapshot_time) }}) ),
1624
EXTRACT(MINUTE FROM {{ datavault4dbt.string_to_timestamp(timestamp_format, daily_snapshot_time) }})
1725
), TO_DATE('{{ start_date}}', '{{ date_format_std }}')
1826
)+1

macros/tables/fabric/control_snap_v0.sql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
{% if datavault4dbt.is_nothing(end_date) %}
44
{% set end_date = datavault4dbt.current_timestamp() %}
5+
{% else %}
6+
{% set end_date = "'"~end_date~"'" %}
57
{% endif %}
68

79
WITH

macros/tables/oracle/control_snap_v0.sql

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
{%- macro oracle__control_snap_v0(start_date, daily_snapshot_time, sdts_alias, end_date=none) -%}
22

3+
{% if datavault4dbt.is_nothing(end_date) %}
4+
{% set end_date = 'current_date' %}
5+
{% else %}
6+
{% set end_date = "TO_DATE('"~end_date~"', '"~datavault4dbt.date_format()~"')" %}
7+
{% endif %}
8+
39
{%- set timestamp_format = datavault4dbt.timestamp_format() -%}
410
{%- set timestamp_value = start_date ~ ' ' ~ daily_snapshot_time -%}
511
{%- if not datavault4dbt.is_something(sdts_alias) -%}
@@ -12,7 +18,7 @@ with generate_dates({{ sdts_alias }}) as (
1218
union all
1319
select {{ sdts_alias }} + 1
1420
from generate_dates
15-
where {{ sdts_alias }} < current_date
21+
where {{ sdts_alias }} < {{ end_date }}
1622
),
1723

1824
initial_timestamps AS (

macros/tables/postgres/control_snap_v0.sql

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
{%- macro postgres__control_snap_v0(start_date, daily_snapshot_time, sdts_alias, end_date=none) -%}
22

3+
{% if datavault4dbt.is_nothing(end_date) %}
4+
{% set end_date = 'CURRENT_TIMESTAMP' %}
5+
{% else %}
6+
{% set end_date = "'"~end_date~"'::timestamp + Interval '1 day'" %}
7+
{% endif %}
38
{%- set timestamp_format = datavault4dbt.timestamp_format() -%}
49

510
{%- if not datavault4dbt.is_something(sdts_alias) -%}
@@ -13,7 +18,7 @@ initial_timestamps AS (
1318
SELECT
1419
sdts::timestamp
1520
FROM
16-
generate_series(timestamp '{{ start_date }} {{ daily_snapshot_time }}', CURRENT_TIMESTAMP, Interval '1 day') AS sdts(day)
21+
generate_series(timestamp '{{ start_date }} {{ daily_snapshot_time }}', {{ end_date }}, Interval '1 day') AS sdts(day)
1722
{%- if is_incremental() %}
1823
WHERE
1924
sdts > (SELECT MAX({{ sdts_alias }}) FROM {{ this }})

macros/tables/redshift/control_snap_v0.sql

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
{%- macro redshift__control_snap_v0(start_date, daily_snapshot_time, sdts_alias, end_date) -%}
22

3+
{% if datavault4dbt.is_nothing(end_date) %}
4+
{% set end_date = 'current_date' %}
5+
{% else %}
6+
{% set end_date = "'"~end_date~"'::timestamp" %}
7+
{% endif %}
38
{%- set timestamp_format = datavault4dbt.timestamp_format() -%}
49
{%- set timestamp_value = start_date ~ ' ' ~ daily_snapshot_time -%}
510
{%- if not datavault4dbt.is_something(sdts_alias) -%}
@@ -11,7 +16,7 @@ with recursive generate_dates({{ sdts_alias }}) as (
1116
union all
1217
select {{ sdts_alias }} + 1
1318
from generate_dates
14-
where {{ sdts_alias }} < current_date
19+
where {{ sdts_alias }} < {{ end_date }}
1520
),
1621

1722
initial_timestamps AS (

macros/tables/snowflake/control_snap_v0.sql

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,12 @@
11
{%- macro snowflake__control_snap_v0(start_date, daily_snapshot_time, sdts_alias, end_date=none) -%}
22

3+
4+
{% if datavault4dbt.is_nothing(end_date) %}
5+
{% set end_date = 'CURRENT_TIMESTAMP' %}
6+
{% else %}
7+
{% set end_date = "DATEADD(day, 1, TO_DATE('"~end_date~"'))" %}
8+
{% endif %}
9+
310
{%- set timestamp_format = datavault4dbt.timestamp_format() -%}
411
{%- set start_date = start_date | replace('00:00:00', daily_snapshot_time) -%}
512

@@ -16,7 +23,7 @@ initial_timestamps AS (
1623
FROM
1724
TABLE(GENERATOR(ROWCOUNT => 100000))
1825
WHERE
19-
sdts <= CURRENT_TIMESTAMP
26+
sdts <= {{ end_date }}
2027
{%- if is_incremental() %}
2128
AND sdts > (SELECT MAX({{ sdts_alias }}) FROM {{ this }})
2229
{%- endif %}

macros/tables/synapse/control_snap_v0.sql

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
{% if datavault4dbt.is_nothing(end_date) %}
44
{% set end_date = datavault4dbt.current_timestamp() %}
5+
{% else %}
6+
{% set end_date = "'"~end_date~"'" %}
57
{% endif %}
68

79
WITH
@@ -23,7 +25,7 @@ initial_timestamps_prep AS (
2325
),
2426

2527
initial_timestamps AS (
26-
SELECT TOP (DATEDIFF(DAY, '{{ start_date }}', {{ end_date}}) + 1)
28+
SELECT TOP (DATEDIFF(DAY, '{{ start_date }}', {{ end_date }}) + 1)
2729
DATEADD(DAY, ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) - 1, '{{ start_date }}' ) AS {{ sdts_alias }}
2830
FROM initial_timestamps_prep s1
2931
CROSS JOIN initial_timestamps_prep s2

0 commit comments

Comments
 (0)