nbadbArena Data Lab
Schema ReferenceHalf-Court MapDerived10 waypoints

Court Geometry

Derived Aggregations

Playbook for the 16 agg_ tables that precompute common analytical rollups

Derived Aggregation Tables

Derived tables are precomputed agg_* outputs built for repeat possessions: the summaries you know analysts will ask for again, where rebuilding from raw game grain every time would just be wasted dribbles.

agg_ tables
16
precomputed rollups for recurring analysis
Primary clusters
3
player, team/lineup, and league/shot summaries
Refresh cadence
Pipeline run
rebuilt whenever transforms refresh the warehouse

Use agg_ tables when the question repeats often enough to deserve a reusable set play. Use analytics_ views when the win comes from pre-joined context instead of a rollup.

How to use this page

  1. Ask whether the question is repeated summary work. If yes, start with agg_.
  2. Choose the cluster: player, team/lineup, or league/shot context.
  3. Drop back to Facts & Bridges if the rollup removes a field or split you still need.

Quick navigation

Jump to section

Choose the right rollup cluster

Start with Choose the rollup when you need the fastest way to map a player, team, lineup, or league question to the right aggregate family.

Jump to section

Player aggregation surfaces

Go to Player aggregation bench unit for career, season, per-minute, rolling-form, clutch, and on/off summaries.

Jump to section

Team and league summaries

Jump to Team and lineup aggregation bench unit or League-context aggregations when the question is bigger than one player.

Generated boundary

Know when to drop down

If the rollup hides too much, fall back to Facts & Bridges. If you need exact schema-backed columns, finish on Star Reference.

Second-unit scoring

Pick agg_ vs facts vs analytics views

If you need...Best surfaceWhy
a reusable summary at a natural player/team/league rollupagg_ tablesThey keep the summary at its intended analytical grain
a pre-joined convenience read for a common workflowAnalytics ViewsThose optimize for reduced join work, not just rollup reuse
a field or split only available at atomic grainFacts & BridgesFact tables preserve the base detail that rollups intentionally compress

Choose the rollup

Content module

Player form and value

agg_player_bio, agg_player_season, agg_player_season_per36, agg_player_season_per48, agg_player_career, agg_player_rolling, agg_clutch_stats, and agg_on_off_splits cover the recurring player summary questions analysts ask every day.

Content module

Team and lineup shape

agg_team_season, agg_team_pace_and_efficiency, agg_team_franchise, and agg_lineup_efficiency package style, efficiency, franchise history, and lineup impact at reusable summary grain.

Content module

League context and shot profile

agg_league_leaders, agg_all_time_leaders, agg_shot_zones, and agg_shot_location_season keep leaderboards and spatial shooting summaries off the critical path for every notebook.

ClusterTables in the rotationGrainBest for
Player form and valueagg_player_bio, agg_player_season, agg_player_season_per36, agg_player_season_per48, agg_player_career, agg_player_rolling, agg_clutch_stats, agg_on_off_splitsPlayer-season, player-game, or player/entity splitCareer summaries, rolling form, normalized rates, and clutch/on-off context
Team and lineup shapeagg_team_season, agg_team_pace_and_efficiency, agg_team_franchise, agg_lineup_efficiencyTeam-season, franchise row, or lineup-seasonPace, efficiency, franchise history, and lineup impact
League context and shot profileagg_league_leaders, agg_all_time_leaders, agg_shot_zones, agg_shot_location_seasonLeague-season, all-time row, or player-zone seasonLeaderboards, shot maps, and contextual comparison around player/team outputs

Fast picks by question

If the question sounds like...Start withWhy
"What does this player's season look like without rebuilding it from game rows?"agg_player_seasonIt is the baseline player-season rollup
"How is this player trending recently?"agg_player_rollingThe rolling windows are already computed
"How do these players compare on a minutes-normalized basis?"agg_player_season_per36 or agg_player_season_per48The normalization is already packaged
"What is this team's style and efficiency profile?"agg_team_pace_and_efficiencyPace and efficiency live together at team-season grain
"What are the best five-man groups?"agg_lineup_efficiencyIt keeps lineup impact at the right unit of analysis
"Who leads the league or all-time list?"agg_league_leaders or agg_all_time_leadersLeaderboards are already rolled up and ranked for reuse
"How does the shot profile break down spatially?"agg_shot_zones or agg_shot_location_seasonThese preserve the shooting summary without dropping to individual shots

Player aggregation bench unit

TableWhat it summarizesReach for it when
agg_player_bioSeason-level bio/profile rowsYou want roster/profile context already aligned for analysis
agg_player_seasonPlayer season totals and averagesYou need the baseline season stat line
agg_player_season_per36 / agg_player_season_per48Minute-normalized player season ratesYou want usage-neutral or minutes-adjusted comparisons
agg_player_careerCareer totals and career-rate summaryYou are building long-arc player dossiers
agg_player_rolling5/10/20-game rolling trendsYou care about form, streaks, and recent trend lines
agg_clutch_statsClutch scoring and baseline contextYou are isolating late-game performance
agg_on_off_splitsOn/off splits by entity and team contextYou need lineup-free impact framing without rebuilding split logic

Team and lineup aggregation bench unit

TableWhat it summarizesReach for it when
agg_team_seasonTeam season averagesYou need the clean season snapshot
agg_team_pace_and_efficiencyPace and rating rollupsYou are comparing style and efficiency together
agg_team_franchiseFranchise history summaryYou need long-horizon team history context
agg_lineup_efficiencyGroup/lineup efficiencyYou are comparing five-man units instead of individual players

League-context aggregations

TableWhat it summarizesReach for it when
agg_league_leadersSeason category leadersYou need quick leaderboards
agg_all_time_leadersAll-time leaderboard rowsYou are doing historical leaderboard work
agg_shot_zonesPlayer-season shooting by zoneYou need a zone-by-zone shot report
agg_shot_location_seasonShot-location season summariesYou want season-level spatial shooting context

Good exit ramps

If agg_ is not enough because...Next move
you still need atomic game, event, or participant detailDrop to the relevant Facts family
you want the rollup plus rich denormalized context already attachedCheck Analytics Views
you need exact field names, types, or nullabilityConfirm the contract in the generated Star Reference

If you still find yourself joining three or four tables after landing on an agg_ output, check Analytics Views. If you need a column that only exists at atomic grain, drop back to the relevant Facts family.

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.

Section hub

On this page