Standard BigQuery ETL Directory Structure
=========================================

sql/{project}/{dataset}/{table_name}/
├── query.sql OR query.py      # The query definition (SQL or Python)
├── metadata.yaml              # Scheduling, ownership, dependencies
├── schema.yaml                # BigQuery schema definition
└── checks.sql (optional)      # Custom validation checks

Examples:
---------

1. Simple incremental query:
sql/moz-fx-data-shared-prod/mozilla_vpn_derived/users_v1/
├── query.sql
├── metadata.yaml
└── schema.yaml

2. Aggregation query:
sql/moz-fx-data-shared-prod/telemetry_derived/clients_daily_event_v1/
├── query.sql
├── metadata.yaml
└── schema.yaml

3. Python ETL (API calls):
sql/moz-fx-data-shared-prod/bigeye_derived/user_service_v1/
├── query.py
├── metadata.yaml
└── schema.yaml

Key Points:
-----------
- Always flat directory structure (no subdirectories within table directories)
- Most tables use query.sql (~95%)
- Use query.py for API calls, multi-project queries, or complex Python operations
- metadata.yaml and schema.yaml managed by metadata-manager skill
- Table names always end with version suffix (_v1, _v2, etc.)
