Court Geometry
Analytics Views
Playbook for the 4 analytics_ outputs that pre-join common analytical workflows
Analytics Views
Analytics views are the warehouse fast break: pre-joined analytics_* outputs that trade a little duplication for a much faster first read in notebooks, dashboards, and exploratory SQL.
Use analytics views when the question is familiar and speed matters more than reconstructing the entire possession chain yourself. Drop to facts or agg_ tables only when you need a different grain or a field these views intentionally leave behind.
How to use this page
- Start here for the first read when the workflow is common and the model already has a packed convenience surface.
- Check the row grain before using a view as a downstream source; convenience does not change the underlying grain.
- Drop down deliberately to Facts & Bridges or Derived Aggregations when you need more detail or a different summary boundary.
Quick navigation
Choose a view fast
Start with View chooser when you know the workflow but not the exact analytics_ object.
Read each view surface
Jump to View scouting reports for a one-card explanation of what each analytics view includes and when to trust it.
Know when not to use them
Go to When not to use an analytics view when you suspect the fast-break surface is hiding too much detail.
Finish on exact contracts
Use Star Reference for exact schema-backed columns after you choose the right view family here.
Four views at a glance
| View | Row grain | What it already packs together | Best first use |
|---|---|---|---|
analytics_player_game_complete | one player-game row | player-game stat families plus player, team, and game context | notebook exploration, player game logs, quick dashboards |
analytics_player_season_complete | one player-season row | season totals, averages, and per-minute normalizations | leaderboard work and player season comparison |
analytics_team_season_summary | one team-season row | team summary metrics, standings, and team context | season snapshots, standings overlays, team comparison |
analytics_head_to_head | one team-opponent summary row | opponent results and scoring margin context | rivalry, matchup prep, and opponent scouting |
View chooser
| If you want... | Start here | Why it clears space |
|---|---|---|
| Single-game player analysis | analytics_player_game_complete | Multiple player-game fact families plus player, team, and game context land in one row set |
| Season leaderboards and rate comparisons | analytics_player_season_complete | Totals, averages, and per-minute normalizations stay together |
| Team snapshots with standings context | analytics_team_season_summary | Team rollups and standings move in the same possession |
| Rivalry or opponent scouting summaries | analytics_head_to_head | Team-vs-team results and scoring margins are already grouped for you |
View scouting reports
analytics_player_game_complete
The all-purpose player-game read: traditional, advanced, misc, hustle, and tracking stats joined with player, team, and game context.
Best when: you want one player-game row with most common context already attached.
analytics_player_season_complete
A season dossier for player comparison: totals, averages, and per-36/per-48 normalization in one place.
Best when: you are ranking players, building season dashboards, or comparing volume to rate stats.
analytics_team_season_summary
Team-season summary that layers season rollups with standings and team context.
Best when: you need quick team snapshots, standings overlays, or year-over-year club comparison.
analytics_head_to_head
Opponent scouting summary that condenses team-vs-team outcomes and scoring margins.
Best when: you want rivalry, matchup, or opponent-prep reporting without rebuilding the join yourself.
Common entry questions
| If the analyst says... | Best opening move | Why |
|---|---|---|
| "Just give me the complete player game row." | analytics_player_game_complete | It eliminates most manual player/team/game joins on day one |
| "I need a player season comparison table now." | analytics_player_season_complete | Totals, averages, and rate views are already aligned |
| "Show me the team season picture with standings context." | analytics_team_season_summary | Summary and standings logic travel together |
| "How have these two teams played each other?" | analytics_head_to_head | Opponent-focused summary work is already shaped for that question |
When not to use an analytics view
| Situation | Better choice | Why |
|---|---|---|
| You need event-by-event tape | Facts | Analytics views intentionally sit above atomic event grain |
| You need a reusable rollup, not a denormalized read | Derived Aggregations | agg_ tables keep the summary at its natural aggregated grain |
| You are validating exact schema-backed columns | Star Reference | The generated tier page is the contract surface |
Common drop-down targets
| Starting view | Drop down when... | Likely next stop |
|---|---|---|
analytics_player_game_complete | you need a specific player-game stat family field or finer event detail | fact_player_game_*, fact_play_by_play, or fact_shot_chart |
analytics_player_season_complete | you need custom split logic or a missing player summary component | player profile/splits facts or agg_player_* tables |
analytics_team_season_summary | you need a different team-season rollup or deeper game-level detail | agg_team_* tables or team-game facts |
analytics_head_to_head | you need atomic game rows behind the rivalry summary | dim_game, fact_team_game, and supporting dimensions |
Keep moving
Stay in the same possession
Keep the mental model warm with adjacent pages, section hubs, and search-friendly routes into the same topic cluster.