63 lines
1.8 KiB
SQL
63 lines
1.8 KiB
SQL
{{
|
|
config(
|
|
materialized='incremental',
|
|
schema='marts',
|
|
unique_key='shot_key',
|
|
tags=["fact"]
|
|
)
|
|
}}
|
|
|
|
WITH shots_enriched AS (
|
|
SELECT *
|
|
FROM {{ ref('int_player_shots_enriched') }}
|
|
WHERE has_game_match = TRUE
|
|
{% if is_incremental() %}
|
|
AND game_date >= (SELECT MAX(game_date) FROM {{ this }}) - INTERVAL '30 days'
|
|
{% endif %}
|
|
),
|
|
|
|
final AS (
|
|
SELECT
|
|
{{ dbt_utils.generate_surrogate_key(['se.shot_id', 'se.shot_source']) }} AS shot_key,
|
|
p.player_key,
|
|
t.team_key,
|
|
opp_t.team_key AS opponent_key,
|
|
d.date_key,
|
|
s.season_key,
|
|
se.game_id,
|
|
se.shot_id,
|
|
se.shot_source,
|
|
se.is_playoff,
|
|
se.team_location,
|
|
se.game_result,
|
|
se.quarter_number,
|
|
se.is_overtime_shot,
|
|
se.seconds_remaining_in_quarter,
|
|
se.shot_x_coordinate,
|
|
se.shot_y_coordinate,
|
|
se.is_made,
|
|
se.shot_made_flag,
|
|
se.shot_missed_flag,
|
|
se.shot_type_raw AS shot_type,
|
|
se.shot_point_value,
|
|
se.is_three_pointer,
|
|
se.is_free_throw,
|
|
se.distance_ft,
|
|
se.shot_distance_zone,
|
|
se.points_generated,
|
|
se.team_had_lead,
|
|
se.team_score_at_shot,
|
|
se.opponent_score_at_shot,
|
|
se.score_margin_at_shot,
|
|
se.is_clutch_shot,
|
|
CAST(se.game_date AS DATE) AS game_date
|
|
FROM shots_enriched AS se
|
|
LEFT JOIN {{ ref('dim_players') }} AS p ON se.player_id = p.player_id
|
|
LEFT JOIN {{ ref('dim_teams') }} AS t ON se.team = t.team_abbr
|
|
LEFT JOIN {{ ref('dim_teams') }} AS opp_t ON se.opponent = opp_t.team_abbr
|
|
LEFT JOIN {{ ref('dim_dates') }} AS d ON CAST(se.game_date AS DATE) = d.full_date
|
|
LEFT JOIN {{ ref('dim_seasons') }} AS s ON se.season_start_year = s.season_start_year
|
|
)
|
|
|
|
SELECT * FROM final
|