nfl-bigquery ingests NFL play-by-play from nflverse into BigQuery, back to 1999. Unlike its siblings — which ingest raw observations — the source here is nflfastR's already-modeled 372-column feed, carrying EPA, WPA, CPOE and air-yards alongside the raw event. That shapes the library: it can't verify against an upstream oracle, so it reconciles itself — aggregating play rows up to the weekly player table and checking six metrics agree.
pip install nfl-bigquery
gcloud auth application-default login
# resumable full-history backfill
nfl-bigquery sync --seasons 1999-2025 --resume \
--pbp-table myproject.mydataset.nfl_plays
# player dimension (MERGE upsert on gsis_id)
nfl-bigquery players --players-table myproject.mydataset.dim_players
# reconcile plays against the weekly table
nfl-bigquery verify --source internal --season 2024 \
--pbp-table myproject.mydataset.nfl_plays --tolerance 5