🔖

dbtで指定期間の日付のリストを取れるmacroを作ってみた

2021/12/08に公開

事の発端

dbtのSlackコミュニティで@jjjjj_knさんが求めていたので探してみた。ただあまり良いものが見つからず作ってみた。

date_range

macros/date_range.sql
{% macro get_date_range(start_date, end_date) -%}

{% set date_query %}
select * from (
  select format_date("%Y-%m-%d", d) as d 
  from unnest(generate_date_array(date('{{ start_date }}'), date('{{ end_date }}'))) as d
  order by d
)
{% endset %}

{% set results = run_query(date_query) %}

{% if execute %}
{% set results_list = results.columns[0].values() %}
{% else %}
{% set results_list = [] %}
{% endif %}

{{ return(results_list) }}
{% endmacro %}

使いかた

{{ set dates = get_date_range('2021-01-01', '2021-02-01') }}

Discussion