Skip to content

Model with dbt

skipprd is bronze. dbt is silver and gold. Keep business logic out of skippr.yml. Python Session loads the table. dbt run models it.

Land a warehouse first: Snowflake or Postgres. dbt does not read the WAL.

Source

Point dbt at the skipprd-landed table. Snowflake shown; swap database and schema for Postgres (analytics.public).

yaml
# models/sources.yml
version: 2

sources:
  - name: skipprd
    database: RAW_DATA
    schema: PUBLIC
    tables:
      - name: bikehire

Silver

Dedupe to a grain you can test.

sql
-- models/silver/bikehire_silver.sql
select
  rider_id,
  bike_id,
  event_type,
  event_date
from {{ source('skipprd', 'bikehire') }}
where rider_id is not null

Gold

A tiny aggregate. That is enough to prove the path.

sql
-- models/gold/bikehire_daily.sql
select
  bike_id,
  event_date,
  count(*) as trip_events
from {{ ref('bikehire_silver') }}
group by 1, 2

Run

bash
dbt run

dbt: keys in skippr.yml (target_schema, silver_suffix, gold_suffix) are naming hints. The engine ignores them at runtime.

If you want an agent to draft the models, that is Skippr IDE / sde. Not required for this recipe.

Then test it.

Data infrastructure, agent systems, and ELT tooling.