From 688e73ea536abcf798f71df90b253ddc07e66f13 Mon Sep 17 00:00:00 2001 From: clausherther Date: Sun, 25 Oct 2020 18:53:14 -0600 Subject: [PATCH] Update base date logic to allow to dynamic date ranges --- macros/get_base_dates.sql | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/macros/get_base_dates.sql b/macros/get_base_dates.sql index 986d086..2928ae1 100644 --- a/macros/get_base_dates.sql +++ b/macros/get_base_dates.sql @@ -1,15 +1,26 @@ -{% macro get_base_dates(start_date, end_date) %} +{% macro get_base_dates(start_date=None, end_date=None, n_dateparts=None, datepart=None) %} with date_spine as ( + {% if start_date and end_date %} + {%- set start_date="cast('" ~ start_date ~ "' as datetime)" -%} + {%- set end_date="cast('" ~ end_date ~ "' as datetime)" -%} + + {% elif n_dateparts and datepart %} + + {%- set start_date = dbt_utils.dateadd(datepart, -1 * n_dateparts, dbt_date.today()) -%} + {%- set end_date = dbt_date.tomorrow() -%} + {% endif %} + {{ dbt_utils.date_spine( datepart="day", - start_date="cast('" ~ start_date ~ "' as datetime)", - end_date="cast('" ~ end_date ~ "' as datetime)", + start_date=start_date, + end_date=end_date, ) }} + ) select - d.date_day + date(d.date_day) as date_day from date_spine d {% endmacro %} \ No newline at end of file