🔖
dbtで指定期間の日付のリストを取れるmacroを作ってみた
事の発端
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