Przejdź do treści
Biblioteka skilli
Dane i analityka · Budowanie i kod

effective-dbt-sql

/effective-dbt-sql

Stosuje reguły poprawności semantycznej SQL w modelach dbt: ponowne użycie istniejących pól, CTE zamiast skorelowanych podzapytań oraz jawne złączenia i listy kolumn.

Repozytorium
lightdash ↗
Licencja
MIT
Ostatnia zmiana repozytorium
25.10.2026

Ocena i bezpieczeństwo

90/ 100Klasa: dobry
Format25 / 25
Frontmatter z nazwą i opisem, poprawna nazwa, opis do 1024 znaków, nazwa zgodna z folderem.
Odkrywalność25 / 25
Opis mówi, kiedy użyć skilla, ma sensowną długość i jest w 3. osobie.
Treść25 / 35
Co najmniej 150 słów i do 500 linii, nagłówki, listy kroków, przykłady albo kod.
Higiena15 / 15
Bez zaślepek typu TODO, bez ścieżek Windows, z licencją.
Ryzykobrak sygnałów w skanie
Pliki w paczce
3
Skrypty
0
Komentarze HTML
0
Adresy URL w SKILL.md
0
Przestarzałość

Brak sygnałów. Repozytorium zmienione 25.10.2026, bez odwołań do wycofanych modeli i API.

Licencja

MIT, otwarta: można używać i zmieniać, z zachowaniem informacji o autorze.

Co robi i kiedy

Stosuje reguły poprawności semantycznej SQL w modelach dbt: ponowne użycie istniejących pól, CTE zamiast skorelowanych podzapytań oraz jawne złączenia i listy kolumn.

Oryginalny opis (EN)

Use when writing or modifying dbt model SQL — deciding whether to add a subquery or reuse an existing dimension/metric, structuring a query, joining models, or refactoring a metric's SQL. Encodes SQL semantic-correctness rules: reuse existing fields, prefer CTEs over correlated subqueries, and make joins and column lists explicit.

Jak działa

  1. Scope
  2. The rules
  3. Not in scope
Sekcje z nagłówków SKILL.md, w oryginale · 32 linii, 427 słów
Podgląd SKILL.md
---
name: effective-dbt-sql
description: Use when writing or modifying dbt model SQL — deciding whether to add a subquery or reuse an existing dimension/metric, structuring a query, joining models, or refactoring a metric's SQL. Encodes SQL semantic-correctness rules: reuse existing fields, prefer CTEs over correlated subqueries, and make joins and column lists explicit.
---

# Effective dbt SQL

Write dbt model SQL that is correct, readable, and idiomatic. This skill is about the **semantics** of the SQL you write — not naming or formatting.

## Scope

**Use this when** you are about to write or change SQL inside a dbt model (`.sql`), or a metric/dimension whose value is defined by SQL.

**This skill covers semantics only.** It does **not** prescribe naming schemes, file layout, or indentation. For those, follow the rule below.

> **Match the target repo first.** These are fallback defaults, not mandates. Before applying any rule, read the models around the one you are changing and match the repo's established conventions where they differ. Apply these rules to new or changed SQL only — do **not** reformat, rename, or restructure existing code that already works.

## The rules

1. **Reuse before you re-derive.** If the value you are asked for is already expressed by an existing dimension or metric — or by two of them combined — compose those fields instead of writing new SQL to recompute it. Read the model's existing dimensions/metrics before adding one. See [reuse-over-subqueries](./resources/reuse-over-subqueries.md).

2. **No correlated subqueries.** Never compute a value with a subquery that references the outer query's rows (a per-row correlated subquery in `SELECT` or `WHERE`). Reuse an existing field, or join to an aggregated CTE instead. This is the single most common mistake. See [cte-pipelines](./resources/cte-pipelines.md).

3. **CTEs over nested subqueries.** Structure a query as a pipeline of named CTEs, each referenced by the next, ending in a final `select`. Prefer this over subqueries nested inside `from`/`where`. See [cte-pipelines](./resources/cte-pipelines.md).

4. **Explicit joins.** Always state the join type (`inner`/`left`/…) and the `on` condition. Never comma-join. Know the grain: a join that fans out rows silently changes every downstream aggregate.

5. **Explicit columns.** Select named columns rather than `select *` when adding or changing what a model emits, so a change to an upstream model can't silently alter this model's output. (A pass-through `select * from final` at the very end of a CTE pipeline is fine — the columns are already pinned by the CTEs.)

6. **Don't break references.** Before editing a model's SQL, read the `source()`/`ref()` models it selects from. Do not rename or remove a column that downstream models or `schema.yml` reference without checking the impact first.

## Not in scope

- **Emitted-type / casting safety** (e.g. boolean-vs-numeric column types): follow the **warehouse skill** the system prompt points you to (`/home/user/.lightdash-skills/`). This skill does not restate casting rules.
- **Naming and formatting conventions:** match the target repo (see the rule above).
Pliki w paczce (3)
  • SKILL.md 3 KB
  • resources/cte-pipelines.md 2 KB
  • resources/reuse-over-subqueries.md 2 KB

Wersje

W bazie nie ma innych skilli o nazwie effective-dbt-sql.

Migawka bazy z 28.10.2026 · wersja paczki cfa5b2d3ca8d (skrót SHA-256 całej paczki)

Zgłoś problem z tym skillem: szkodliwa treść, błędny opis albo prośba autora o usunięcie.

Podobne skille

  • 95dbt-modeling
    Pisze i refaktoryzuje modele dbt z wzorcami CTE i szablonami warstw staging, intermediate oraz mart.
  • 95dbt-bigquery
    Tworzy i optymalizuje modele oraz potoki dbt dla BigQuery, poprawia SQL w projekcie i konfiguruje nowy projekt dbt.
  • 100creating-dbt-models
    Tworzy modele dbt zgodne z konwencjami projektu: nowe modele, zmiany logiki, kolumn i joinów oraz implementacja modelu ze specyfikacji schema.yml.
  • 100dbt
    Opisuje strukturę projektu dbt, wzorce SQL i dobre praktyki dla hurtowni analitycznej: modele, testy zapytań i nowe tabele analityczne.
  • 100using-dbt-for-analytics-engineering
    Buduje i modyfikuje modele dbt, pisze transformacje SQL z ref() i source(), tworzy testy i waliduje wyniki przez dbt show.
  • 95sql-ops
    Zbiera ściągawkę ze wzorców SQL: CTE, funkcje okna, złączenia, strategie indeksowania i paginacja.

Uwagi i zgłoszenia

Wiadomość trafi do Bartosza Sokolińskiego. Adres e-mail jest potrzebny tylko do odpowiedzi. Szczegóły w polityce prywatności.