@@ -0,0 +1,44 @@
|
||||
{{
|
||||
config(
|
||||
materialized='table',
|
||||
schema='marts',
|
||||
tags=["dimension"]
|
||||
)
|
||||
}}
|
||||
|
||||
{% set start_date_query %}
|
||||
select min(game_date)::date from {{ ref('stg_games') }}
|
||||
{% endset %}
|
||||
{% set start_date = dbt_utils.get_single_value(start_date_query) %}
|
||||
|
||||
{% set end_date_query %}
|
||||
select max(game_date)::date from {{ ref('stg_games') }}
|
||||
{% endset %}
|
||||
{% set end_date = dbt_utils.get_single_value(end_date_query) %}
|
||||
|
||||
WITH date_spine AS (
|
||||
SELECT UNNEST(generate_series(
|
||||
'{{ start_date }}'::date,
|
||||
'{{ end_date }}'::date,
|
||||
INTERVAL '1 day'
|
||||
))::date AS date_day
|
||||
)
|
||||
|
||||
SELECT
|
||||
CAST(strftime(date_day, '%Y%m%d') AS INTEGER) AS date_key,
|
||||
date_day AS full_date,
|
||||
EXTRACT(YEAR FROM date_day)::int AS year,
|
||||
EXTRACT(QUARTER FROM date_day)::int AS quarter_of_year,
|
||||
EXTRACT(MONTH FROM date_day)::int AS month_of_year,
|
||||
strftime(date_day, '%B') AS month_name,
|
||||
EXTRACT(DAY FROM date_day)::int AS day_of_month,
|
||||
EXTRACT(ISODOW FROM date_day)::int AS day_of_week,
|
||||
strftime(date_day, '%A') AS day_of_week_name,
|
||||
EXTRACT(DOY FROM date_day)::int AS day_of_year,
|
||||
EXTRACT(WEEK FROM date_day)::int AS week_of_year,
|
||||
CASE
|
||||
WHEN EXTRACT(ISODOW FROM date_day) IN (6, 7) THEN true
|
||||
ELSE false
|
||||
END AS is_weekend
|
||||
FROM date_spine
|
||||
ORDER BY full_date
|
||||
Reference in New Issue
Block a user