nbadbArena Data Lab
Data DictionaryScoreboard KeyField Reference19 waypoints

Stat Legend

Field Reference

Curated scorer's-table guide to the most important column patterns across the warehouse

Field Reference

This page is the scorer's-table cheat sheet for the warehouse: not every single field in every generated schema block, but the recurring column patterns that make dense reference pages faster to scan and much harder to misread.

Use it when the column name is technically familiar but context is still fuzzy: is this an identity key or a history key, a side-of-ball label or a duplicate-looking participant slot, a rate or a total, or a discriminator that changes the row's meaning entirely?

Best use
Decode patterns
learn how keys, roles, metrics, and suffixes behave across the model
Primary hubs
4
player, team, game, and season fields carry most joins
Watch closely
Grain
discriminator columns often define what a row actually means
Exact inventory
Generated
use raw, staging, and star pages for exhaustive schema-backed field lists

Need the exact field list for a specific schema-backed table? Jump to the generated Raw, Staging, or Star inventory. Use this page to decode how those fields behave.

Pick the lookup sheet

Quick routes on this page

Use this page like a scan aid, not like a linear essay.

Quick route

Find the join anchors first

Jump to Identity and grain columns when you need to decide whether a row is keyed by player, team, game, season, date, or lineup/group context.

Quick route

Decode who the row is talking about

Use Role and context columns for home vs visitor, offense vs defense, participant-slot fields, and shot-zone labels.

Quick route

Read the stat name by sight

Open Metric naming quick read when the question is really about suffixes like _pct, _rank, total_, or rolling windows.

Quick route

Explain the duplicate-looking rows

Go to Discriminator columns when repeated keys might actually be different slices, summaries, or tracking cuts rather than bad duplication.

Start here by question

If the question is...Read this sectionWhy
"Which columns identify the row and define its grain?"Identity and grain columnsThese are the keys and season/game anchors that keep joins honest
"What do these home/visitor/offense/defense columns mean?"Role and context columnsThese fields tell you which side of the possession a row is describing
"How should I interpret _pct, avg_, total_, or rolling fields?"Metric naming quick readThis is the fastest way to decode a stat column by sight
"Why do multiple rows exist for what looks like the same entity?"Discriminator columnsDashboard-style surfaces often encode row meaning in type/context fields

Identity and grain columns

Primary join anchors

PatternWhere you will see itHow to read it
player_iddim_player, player facts, matchup and shot tablesDefault natural key for player joins across the analytical surface
team_iddim_team, team facts, many player/team mixed factsDefault team join key for both team-level and roster-context analysis
game_iddim_game, game facts, player-game and team-game factsThe main possession/game anchor for event and box-score style analysis
group_idlineup-oriented facts and bridgesIdentifier for lineup/group analysis rather than a single player or team

Grain-scoping helpers

PatternWhere you will see itHow to read it
season_yeardim_game, season-level facts, aggregates, analytics viewsCommon season-scoping field; use it early to narrow wide scans
season_typegame or season summary surfacesDistinguishes regular season, playoffs, and other competition phases
date_key / full_datedim_date and date-aware reportingCalendar helpers for reporting windows, weekday analysis, and date joins

History-aware keys

PatternWhere you will see itHow to read it
<entity>_skhistory-aware dimensions such as dim_playerSurrogate/history key used when row state over time matters

If a table exposes both <entity>_id and <entity>_sk, read them as different jobs, not duplicate columns. The natural key answers who; the surrogate/history key answers which versioned row.

Role and context columns

Side-of-game context

Column or patternWhat it usually signalsScouting note
home_team_id / visitor_team_idBoth clubs attached to one game rowThe main game dimension uses visitor, not away, for the second team
sideHome/away designation on a rowImportant in stint and bridge-style tables where one surface carries both sides
def_player_id / def_team_idDefensive-side participant in matchup or defense tablesKeep offense and defense in separate lanes when joining

Participant-slot columns

Column or patternWhat it usually signalsScouting note
player1_id / player2_id / player3_idEvent participants embedded directly on an action rowCommon on play-by-play style data before participant rows are fanned out

Human-readable labels and geography

Column or patternWhat it usually signalsScouting note
matchup, conference, divisionHuman-readable context labelsUseful for output and grouping, but not substitutes for business keys
zone_basic, zone_area, zone_rangeShot geographyRead these together to describe where a shot came from on the floor

Metric naming quick read

Percentages, ratings, and ranks

PatternMeaningExample interpretation
_pctDecimal percentage or ratefg_pct, ts_pct, score_pct are typically stored as 0.0-1.0
_ratingPer-possession rating metricoff_rating, def_rating, and net_rating describe scoring efficiency context
_rankOrdering within a categorypts_rank or conference_rank is only meaningful with the matching leaderboard or standings context

Totals, averages, and windows

PatternMeaningExample interpretation
total_Aggregate count or sumtotal_pts means season total points, not per-game output
avg_Average over the row's grainavg_pts on a season rollup means points per game at that summary grain
_rollNRolling window metricpts_roll5 means a five-game rolling average, not a season mean

Flags and shorthand

PatternMeaningExample interpretation
is_Boolean flagis_current and is_weekend are yes/no state markers
shorthand metricsEstablished basketball abbreviationspie, pace, ppp, tchs, and spd are compact stat names rather than suffix-based patterns
Read the row meaning

Discriminator columns

Some surfaces look denormalized because they intentionally stack multiple related feeds or analytical cuts into one table. In those cases, the discriminator column is part of the row's meaning.

PatternWhat it tells youCommon examples
*_typeWhich slice or variant produced the rowdetail_type, summary_type, tracking_type, leader_type
*_sourceWhich upstream context or feed produced the rowcontext_source
split_*Which analytical split the row belongs tosplit_type
entity_*Which entity level is representedentity_type, entity_id
chart/shot labelsWhich shot or chart cut is presentshot_type, chart_type

If two rows share the same player_id or team_id but differ on one of these fields, they are usually not duplicates. They are different possessions in the same set.

Stop here before calling it a duplicate

  • If the repeated row differs by detail_type, summary_type, tracking_type, or split_type, it is usually a different analytical cut.
  • If the repeated row differs by entity_type, it may represent a different level of analysis on the same surface.
  • If the repeated row differs by shot/chart labels, you are often looking at parallel geography buckets, not bad dedupe.

Practical reading order for dense tables

  1. Find the grain first: look for game_id, season_year, player_id, team_id, or lineup/group keys.
  2. Check the discriminator fields: a detail_type or split_type can change the entire meaning of the row.
  3. Read role columns next: home vs visitor, offense vs defense, or participant slot fields tell you which side of the ball you are looking at.
  4. Only then scan the measures: percentages, ratings, counts, and ranks make sense once the row's role is clear.

Common misread traps

Trap to avoid

Natural key vs history key

Do not treat <entity>_id and <entity>_sk as interchangeable. The natural key answers who; the surrogate/history key answers which row version.

Trap to avoid

Home/visitor labels are not noise

On game-centered surfaces, home_team_id and visitor_team_id define the matchup context. They are part of the row's story, not decorative lookup columns.

Trap to avoid

Totals and averages should not be mixed casually

total_pts and avg_pts can sit near each other on season surfaces but answer different questions. Check the grain before comparing them to player-game rows.

Trap to avoid

Repeated IDs are often intentional

If repeated keys differ on detail_type, summary_type, tracking_type, or split_type, you are probably looking at parallel analytical cuts rather than a broken dedupe.

When the table is still too dense, switch to the schema page first: Dimensions, Facts, Derived Aggregations, or Analytics Views. Use the curated page to understand the table family, then come back to the generated field inventory for exact columns.

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