| dbt | ||
| nfl_data | ||
| .env.example | ||
| .gitignore | ||
| .infisical.json | ||
| app.py | ||
| Dockerfile | ||
| fantasy_scoring.md | ||
| README.md | ||
| requirements.txt | ||
NFL-DATA
NFL data extraction, load, and transformation from ESPN NFL API using Python and dbt.
Project setup
Set up and activate a virtual environment with the following command:
python -m venv venv
# Windows
./venv/Scripts/activate
# Linux
source venv/bin/activate
Install all the necessary packages using the following command:
python -m pip install -r requirements.txt
Environment variables
Secrets management is made possible using Infisical. Install the CLI to inject secrets.
Otherwise, use a .env to specify the required variables. See .env.example.
Command reference
NFL-DATA CLI
Infisical and secrets
Using Infisical for secrets management is recommended. Commands can be wrapped in an Infisical call:
infisical run --command "python app.py ..."
Load strategy
All commands have the --load-strategy or -ls option to specify how NFL-DATA will load new JSON data into the warehouse:
replaceclears out all previously loaded JSON data before inserting.addwill load JSON data without any additional checks. Will introduce multiple entries for the same object.skipwill only load JSON data if no other data exists for a given object.day_replacewill replace JSON data if the same object was previously loaded today.
Commands
python app.py game-day # Game day run: pull today's schedule and load data for completed games.
python app.py load-season [year] # Load season data.
python app.py load-schedule --year year # Load schedule data. Year is optional, defaults to current year.
python app.py load-event [event-id] # Load event, drives, and roster data.
python app.py load-venue [venue-id|all] # Load venue data; will load all venues when venue-id is unspecified.
python app.py get-weather [event-id] # Load weather data by event. Loads all events with missing weather data when event-id is unspecified.
python app.py docs # Upload dbt static docs to S3.
dbt
To use dbt commands, first change directory into the dbt subdirectory.
cd dbt/
From here, all dbt commands can be accessed. Take a look at the dbt Command Reference page for details.
Running a full build will model newly loaded raw data since last full build:
dbt build