Claude-skill-registry dbt
dbt with TD Trino. Covers profiles.yml setup (method:none, user:TD_API_KEY), required override macros (no CREATE VIEW), TD_INTERVAL in models, and TD Workflow deployment.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/dbt" ~/.claude/skills/majiayu000-claude-skill-registry-dbt && rm -rf "$T"
manifest:
skills/data/dbt/SKILL.mdsource content
dbt with Treasure Data Trino
Installation
uv venv && source .venv/bin/activate uv pip install dbt-core dbt-trino==1.9.3
profiles.yml
td: target: dev outputs: dev: type: trino method: none # Not 'ldap' user: "{{ env_var('TD_API_KEY') }}" password: dummy # Not used host: api-presto.treasuredata.com port: 443 database: td # Always 'td' schema: your_dev_database # Your TD database name threads: 4 http_scheme: https session_properties: query_max_run_time: 1h
Key TD settings:
for API key authmethod: none
(always)database: td
(what you see in TD Console)schema: your_td_database
Required Override Macros
TD doesn't support
CREATE VIEW. Create macros/override_dbt_trino.sql:
{% macro trino__create_view_as(relation, sql) -%} create or replace table {{ relation }} as ( {{ sql }} ); {%- endmacro %} {% macro trino__list_relations_without_caching(schema_relation) %} {% call statement('list_relations_without_caching', fetch_result=True) %} select table_catalog as "database", table_schema as "schema", table_name as "name", table_type as "type" from {{ schema_relation }}.information_schema.tables where table_schema = '{{ schema_relation.schema }}' {% endcall %} {{ return(load_result('list_relations_without_caching').table) }} {% endmacro %}
dbt_project.yml
name: 'my_td_project' version: '1.0.0' config-version: 2 profile: 'td' flags: require_certificate_validation: true vars: target_range: '-3M/now' models: my_td_project: +materialized: table +on_schema_change: "append_new_columns"
Model Patterns
Basic model:
{{ config(materialized='table') }} SELECT TD_TIME_STRING(time, 'd!', 'JST') as date, COUNT(*) as event_count FROM {{ source('raw', 'events') }} WHERE TD_INTERVAL(time, '{{ var("target_range", "-7d") }}', 'JST') GROUP BY 1
Incremental model:
{{ config( materialized='incremental', unique_key='event_id' ) }} SELECT * FROM {{ source('raw', 'events') }} WHERE TD_INTERVAL(time, '{{ var("target_range", "-1d") }}', 'JST') {% if is_incremental() %} AND time > (SELECT MAX(time) FROM {{ this }}) {% endif %}
Commands
dbt debug # Test connection dbt run # Run all dbt run --select daily_events # Run specific dbt run --vars '{"target_range": "-1d"}' # Override variable dbt run --full-refresh # Rebuild incremental dbt test # Run tests
TD Workflow Deployment
# dbt_workflow.dig timezone: Asia/Tokyo schedule: daily>: 03:00:00 _export: docker: image: "treasuredata/customscript-python:3.12.11-td1" _env: TD_API_KEY: ${secret:td.apikey} +setup: py>: tasks.InstallPackages +dbt_run: py>: dbt_wrapper.run_dbt command_args: ['run', '--target', 'prod']
tasks.py:
def InstallPackages(): import subprocess, sys subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'dbt-core==1.10.9', 'dbt-trino==1.9.3'])
Common Errors
| Error | Fix |
|---|---|
| connector does not support creating views | Add override macro above |
| Table ownership information not available | Add override macro for list_relations |
| Var 'target_range' is undefined | Add default: |