
Snowflake Dbt Airbnb Analytics
Stand up a Snowflake + dbt analytics project on Inside Airbnb data with staging, intermediate, and mart layers, incremental facts, tests, and an optional Streamlit dashboard.
Overview
snowflake-dbt-airbnb-analytics is an agent skill most often used in Build (also Grow analytics) that implements a Snowflake and dbt Inside Airbnb warehouse with layered models, incremental facts, tests, and Streamlit.
Install
npx skills add https://github.com/aradotso/data-skills --skill snowflake-dbt-airbnb-analyticsWhat is this skill?
- End-to-end Inside Airbnb ingestion from CSV/GZIP into Snowflake internal stages
- Layered dbt architecture: staging clean/cast, intermediate joins, mart dimensions and facts
- Incremental fact modeling with Snowflake merge strategy for calendar-scale data
- Generic and singular dbt tests for uniqueness, relationships, and business rules
- Optional Streamlit dashboard layer on top of marts for exploratory insights
- Three-layer dbt flow: staging → intermediate → marts
- Incremental modeling via Snowflake merge strategy on fact tables
Adoption & trust: 1 installs on skills.sh; 1 GitHub stars; trending (+100% hot-view momentum).
What problem does it solve?
You want a realistic analytics-engineering stack but lack a coherent pattern for staging, marts, incremental loads, and tested Snowflake dbt models.
Who is it for?
Indie data builders and full-stack solos prototyping BI on open Airbnb data or cloning the pattern for their own marketplace metrics.
Skip if: Teams that only need lightweight product analytics in Posthog or GA without a warehouse, or Salesforce-only CRM reporting with no SQL mesh.
When should I use this skill?
Triggers include setting up Snowflake dbt with Inside Airbnb data, building incremental facts, writing dbt tests, configuring profiles, or adding Streamlit to the project.
What do I get? / Deliverables
You get a documented Snowflake dbt project with layered models, validated tests, incremental facts, and an optional Streamlit dashboard wired to marts.
- Layered dbt models (staging, intermediate, marts)
- Incremental fact tables with merge strategy
- dbt test suite for data quality
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Canonical shelf is Build because the skill implements the warehouse, dbt models, and ingestion—core backend analytics engineering before ongoing reporting. Backend fits layered SQL transformations, incremental merge facts, and Snowflake stages rather than front-end product UI.
Where it fits
Configure dbt profiles and stage raw Airbnb CSV/GZIP into Snowflake before any dashboard work.
Wire internal stages and merge-based incremental facts for high-volume calendar rows.
Run generic and singular dbt tests to gate merges before promoting marts.
Expose monthly aggregates and listing metrics through mart models consumed by Streamlit.
How it compares
Opinionated dbt + Snowflake project template—not a generic SQL linter or a real-time event streaming skill.
Common Questions / FAQ
Who is snowflake-dbt-airbnb-analytics for?
Solo builders and small teams learning analytics engineering who want a full Snowflake, dbt, and Streamlit reference on open Inside Airbnb data.
When should I use snowflake-dbt-airbnb-analytics?
Use it in Build when creating models and incremental facts, and in Grow when standing up dashboard-facing marts and Streamlit for listing and calendar insights.
Is snowflake-dbt-airbnb-analytics safe to install?
It implies Snowflake credentials and cloud spend; review the Security Audits panel on this page and never commit secrets in dbt profiles or env files.
SKILL.md
READMESKILL.md - Snowflake Dbt Airbnb Analytics
# Snowflake dbt Airbnb Analytics > Skill by [ara.so](https://ara.so) — Data Skills collection. This project demonstrates a complete analytics engineering workflow using Snowflake, dbt, and Streamlit. It loads Inside Airbnb open data into Snowflake, transforms it through a layered dbt architecture (staging → intermediate → marts), validates data quality with tests, and serves insights via a Streamlit dashboard. ## What This Project Does - **Raw data ingestion**: Loads CSV/GZIP files from Inside Airbnb into Snowflake internal stages - **Layered transformations**: Implements staging (clean/cast), intermediate (joins/enrichment), and mart (dimensions/facts) layers - **Incremental modeling**: Uses Snowflake merge strategy for fact tables - **Data quality**: Generic and singular dbt tests validate uniqueness, relationships, and business rules - **Analytics dashboard**: Streamlit app queries marts for neighbourhood and listing performance **Data sources**: `listings.csv.gz`, `calendar.csv.gz`, `reviews.csv.gz`, `neighbourhoods.csv` from [Inside Airbnb](https://insideairbnb.com/get-the-data/) ## Installation ```bash # Clone and set up environment git clone https://github.com/analyticsdurgesh/Snowflake_DBT_Project.git cd Snowflake_DBT_Project python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ``` ## Configuration ### 1. Snowflake Credentials Create local-only credential files (ignored by git): ```bash cp profiles.yml.example profiles.yml cp config/local_credentials.example.json config/local_credentials.json ``` **`profiles.yml`** (dbt connection): ```yaml airbnb_snowflake: target: dev outputs: dev: type: snowflake account: YOUR_ACCOUNT user: YOUR_USER password: "{{ env_var('SNOWFLAKE_PASSWORD') }}" role: YOUR_ROLE database: AIRBNB_DB warehouse: COMPUTE_WH schema: ANALYTICS threads: 4 client_session_keep_alive: False ``` **`config/local_credentials.json`** (Streamlit connection): ```json { "account": "YOUR_ACCOUNT", "user": "YOUR_USER", "password": "YOUR_PASSWORD", "role": "YOUR_ROLE", "warehouse": "COMPUTE_WH", "database": "AIRBNB_DB", "schema": "ANALYTICS" } ``` Use environment variables in production: ```bash export SNOWFLAKE_PASSWORD="your_password" ``` ### 2. Download Inside Airbnb Data Place raw files in `data/raw/`: ```text data/raw/listings.csv.gz data/raw/calendar.csv.gz data/raw/reviews.csv.gz data/raw/neighbourhoods.csv ``` Recommended dataset: New York City from [Inside Airbnb](https://insideairbnb.com/get-the-data/). ## Loading Raw Data The Python loader creates Snowflake objects and stages data: ```bash python scripts/load_inside_airbnb_to_snowflake.py ``` **What it does**: 1. Executes `setup/snowflake_setup.sql` to create database, schemas, and stage 2. Uploads raw files to `INSIDE_AIRBNB_STAGE` 3. Creates raw tables with headers from CSV files 4. Copies staged data into `RAW` schema tables **Key loader code patterns**: ```python import snowflake.connector import json # Load credentials with open('config/local_credentials.json') as f: creds = json.load(f) # Connect to Snowflake conn = snowflake.connector.connect( account=creds['account'], user=creds['user'], password=creds['password'], role=creds['role'], warehouse