본문으로 건너뛰기
cccskills
무료GitHub에 공개

dbt-analytics-engineer

dbt Core/Cloud data transformations, testing, documentation, and CI/CD. Activate on: dbt, data transformation, analytics engineering, ref, source, staging model, mart, dbt test. NOT for: orchestration/scheduling (use airflow-dag-orchestrator), data warehouse tuning (use data-warehouse-optimizer).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구Shopify
설치 방법 보기

포함된 파일(1)

  • SKILL.md7.4 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

dbt Analytics Engineer

Build, test, and document data transformations using dbt Core/Cloud with modern analytics engineering practices.

Decision Points

Materialization Selection Strategy

Model Size & Query Pattern → Materialization Choice

├── < 1M rows, rarely queried
│   └── VIEW (ephemeral if only intermediate)
├── 1M-10M rows, daily queries
│   └── TABLE (full refresh nightly)
├── > 10M rows, frequent queries
│   ├── Append-only data → INCREMENTAL (append strategy)
│   ├── Updates/deletes → INCREMENTAL (merge strategy)
│   └── Complex joins/aggregations → TABLE with incremental source prep
└── Dev/staging environment
    └── Always VIEW (cost optimization)

Model Layer Assignment

Data Characteristics → Layer Placement

├── Raw source mapping (1:1)
│   └── staging/ (stg_ prefix, light cleaning only)
├── Business logic, joins, calculations
│   └── intermediate/ (int_ prefix, reusable components)
├── Final consumption ready
│   ├── Analytics/BI → marts/ (fct_, dim_ prefixes)
│   └── ML features → features/ (fea_ prefix)
└── One-off analysis
    └── analysis/ (not materialized)

Testing Strategy Selection

Model Criticality & Data Patterns → Test Coverage

├── Core business metrics (revenue, customers)
│   └── COMPREHENSIVE: unique, not_null, relationships, custom business rules
├── Supporting dimensions
│   └── STANDARD: unique, not_null, accepted_values
├── Intermediate models
│   └── MINIMAL: not_null on join keys, row count > 0
└── Development models
    └── BASIC: not_null on primary key only

Failure Modes

1. Circular Reference Death Spiral

Detection Rule: dbt compile fails with "Cycle detected" error Symptoms: Model A refs Model B, which refs Model C, which refs Model A Fix: Break cycle by moving shared logic to new intermediate model that both reference

2. Incremental Model State Corruption

Detection Rule: dbt run succeeds but row counts decrease unexpectedly on incremental models Symptoms: Late-arriving data missed, duplicates created, or filter logic excludes existing records Fix: dbt run --full-refresh to rebuild, then fix filter conditions and unique_key configuration

3. Test Suite Performance Collapse

Detection Rule: dbt test takes >30min or times out on warehouse Symptoms: Tests query entire fact tables without limits, complex join tests on unindexed columns Fix: Add limit: 100000 to expensive tests, use dbt test --select config.severity:error for CI

4. Documentation Debt Explosion

Detection Rule: >50% of models/columns lack descriptions in dbt docs generate output Symptoms: New team members can't understand model purpose, business users avoid self-service Fix: Require description in CI checks, template model YAML generation, quarterly doc reviews

5. Macro Spaghetti Anti-Pattern

Detection Rule: Macros calling other macros >3 levels deep, single macro >100 lines Symptoms: Impossible to debug Jinja errors, changes break unexpected downstream models Fix: Flatten macro hierarchies, split complex macros, add macro unit tests with dbt-unit-testing

Worked Examples

Complete Source-to-Mart Workflow

Scenario: E-commerce orders data from Shopify API to revenue analytics

Step 1: Source Configuration

# models/staging/shopify/_sources.yml
sources:
  - name: shopify_raw
    freshness:
      warn_after: {count: 6, period: hour}
    tables:
      - name: orders
        description: "Raw orders from Shopify API"

Step 2: Staging Model (Decision: VIEW for <1M rows)

-- models/staging/shopify/stg_shopify__orders.sql
SELECT
  order_id::varchar as order_id,
  customer_id::varchar as customer_id,
  order_date::date as order_date,
  total_amount::decimal(10,2) as total_amount,
  status::varchar as status,
  _loaded_at::timestamp as _loaded_at
FROM {{ source('shopify_raw', 'orders') }}
WHERE status != 'cancelled'  -- Business rule: exclude cancelled

Step 3: Mart Model (Decision: INCREMENTAL for >10M rows, daily queries)

-- models/marts/finance/fct_revenue.sql
{{
  config(
    materialized='incremental',
    unique_key='order_id',
    incremental_strategy='merge'  -- Handle late updates
  )
}}

SELECT
  order_id,
  customer_id,
  order_date,
  total_amount,
  status,
  _loaded_at
FROM {{ ref('stg_shopify__orders') }}

{% if is_incremental() %}
  -- Only process recent data
  WHERE _loaded_at > (SELECT max(_loaded_at) FROM {{ this }})
{% endif %}

Trade-off Analysis Made:

  • Staging as VIEW: Cost-efficient, <1M rows, simple transformation
  • Mart as INCREMENTAL: 50M+ order rows, saves $200/day vs full refresh
  • Merge strategy: Handles order status updates (shipped→delivered)

What novice misses: Using append strategy for updatable data, forgetting late-arriving data filters

Quality Gates

  • All models follow naming convention: stg_, int_, fct_, dim_ prefixes
  • Every model has primary key with unique and not_null tests
  • Incremental models have unique_key and appropriate strategy (merge/append)
  • All {{ ref() }} and {{ source() }} calls resolve without hardcoded table names
  • Models >10M rows use incremental materialization with proper filter logic
  • Every model and column has description in YAML schema file
  • dbt test passes with zero failures on all error-level tests
  • dbt docs generate produces complete lineage graph with no broken references
  • CI runs dbt build --select state:modified+ and completes in <15 minutes
  • Source freshness checks configured with appropriate warn/error thresholds

NOT-FOR Boundaries

Do NOT use this skill for:

  • Orchestration/Scheduling: DAG dependencies, cron jobs → Use airflow-dag-orchestrator instead
  • Data Ingestion: API extraction, CDC, streaming → Use streaming-pipeline-architect instead
  • Warehouse Optimization: Query performance, indexing, partitioning → Use data-warehouse-optimizer instead
  • Data Catalog Management: Business glossary, data governance → Use data-governance-steward instead
  • Real-time Analytics: Sub-second latency, event streaming → Use realtime-analytics-architect instead

Delegation Rules:

  • For warehouse-specific performance issues → data-warehouse-optimizer
  • For data quality monitoring/alerting beyond dbt tests → data-quality-guardian
  • For complex dimensional modeling decisions → dimensional-modeler

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Expert in 2000s-era music visualization (Milkdrop, AVS, Geiss) and modern WebGL implementations. Specializes in Butterchurn integration, Web Audio API AnalyserNode FFT data, GLSL shaders for audio-reactive visuals, and psychedelic generative art. Activate on "Milkdrop", "music visualization", "WebGL visualizer", "Butterchurn", "audio reactive", "FFT visualization", "spectrum analyzer". NOT for simple bar charts/waveforms (use basic canvas), video editing, or non-audio visuals.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

curiositech/windags-skills162026년 10월 14일 업데이트

Expert legal research agent for finding and scraping expungement data state by state. Knows authoritative sources, URL patterns, Firecrawl configuration, and 2026 legal landscape.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

curiositech/windags-skills162026년 10월 14일 업데이트

Expert in 3D computer vision labeling tools, workflows, and AI-assisted annotation for LiDAR, point clouds, and sensor fusion. Covers SAM4D/Point-SAM, human-in-the-loop architectures, and vertical-specific training strategies. Activate on '3D labeling', 'point cloud annotation', 'LiDAR labeling', 'SAM 3D', 'SAM4D', 'sensor fusion annotation', '3D bounding box', 'semantic segmentation point cloud'. NOT for 2D image labeling (use clip-aware-embeddings), general ML training (use ml-engineer), video annotation without 3D (use computer-vision-pipeline), or VLM prompt engineering (use prompt-engineer).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

curiositech/windags-skills162026년 10월 14일 업데이트

Apply crisis decision-making research to agent routing, uncertainty triage, and coordination failure analysis in time-pressured systems. Use when diagnosing handoff failures, analytical paralysis, or expert judgment under incomplete information. NOT for routine coding, simple CRUD design, or static single-agent tasks with complete information.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

curiositech/windags-skills162026년 10월 14일 업데이트

Use for insight, reframing, contradiction, impasse, and anomaly-driven problem solving when execution effort no longer helps. NOT for routine optimization, error correction, or well-specified tasks with known solution paths.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

curiositech/windags-skills162026년 10월 14일 업데이트

Apply normative BDI reasoning to agents that must detect norms, choose which commitments to internalize, and resolve conflicts by comparing consequences. Use when obligations, prohibitions, or policies collide in autonomous systems. NOT for simple fixed-priority rules, pure constraint satisfaction, or domains where no real normative conflict exists.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

curiositech/windags-skills162026년 10월 14일 업데이트

curiositech의 스킬 모두 보기

이 스킬의 문제 신고