SQL:n testaaminen: dbt-testit ja Great Expectations
Kirjoita tietojen laatua testaavia dbt-testejä (unique, not_null, accepted_values) ja monipuolisempia tarkistuksia Great Expectationsilla.
SQL:n testaaminen: dbt-testit ja Great Expectations on ilmainen SQL Academy-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu SQL Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Miksi SQL:ää testataan?
Virheelliset tiedot jäävät näkymättömiksi, kunnes ne johtavat virheelliseen päätökseen. Testit löytävät seuraavat ongelmat:
- Skeeman muuttuminen (sarake poistettu tai tyyppi muuttunut)
- Tietojen laatu (NULL-arvoja kohdissa, joissa niitä ei sallita, kaksoiskappaleita tai sallitun alueen ulkopuolisia arvoja)
- Viite-eheyden ongelmat (orporivit)
- Liiketoiminnan invariantit (revenue ≥ 0, summat täsmäävät)
dbt-testit: sisäänrakennetut
Ilmoittakaa sarakekohtaisesti YAMLissa:
# models/orders.yml
version: 2
models:
- name: orders
columns:
- name: id
tests:
- unique
- not_null
- name: user_id
tests:
- not_null
- relationships:
to: ref('users')
field: id
- name: status
tests:
- accepted_values:
values: ['pending', 'paid', 'cancelled']dbt-testien suorittaminen
Suorittakaa kaikki testit:
dbt test
dbt test --select orders
dbt build # = run + testMukautetut yksittäiset testit
Testi on yksinkertaisesti SELECT-kysely, joka palauttaa rivejä testin epäonnistuessa:
-- tests/no_negative_totals.sql
SELECT id, total
FROM {{ ref('orders') }}
WHERE total < 0Yleiset testit
Parametrisoituja testejä, joita voidaan käyttää uudelleen monissa sarakkeissa:
-- tests/generic/test_in_range.sql
{% test in_range(model, column_name, min, max) %}
SELECT * FROM {{ model }}
WHERE {{ column_name }} < {{ min }} OR {{ column_name }} > {{ max }}
{% endtest %}
-- Use it in YAML:
columns:
- name: age
tests:
- in_range:
min: 0
max: 120dbt-utils-paketti
Lisää testejä, kuten yhdistelmien yksikäsitteisyyden, expression_is_true- ja equal_rowcount-testit:
- dbt_utils.expression_is_true:
expression: "revenue >= 0"
- dbt_utils.equal_rowcount:
compare_model: ref('staging_orders')Great Expectations
Raskaampi vaihtoehto — Python-kehys, jossa on laaja odotuskirjasto ja monipuoliset raportit:
import great_expectations as ge
suite = context.add_or_update_expectation_suite('orders')
batch = context.get_validator(batch_request, expectation_suite_name='orders')
batch.expect_column_values_to_not_be_null('id')
batch.expect_column_values_to_be_between('total', 0, 10000)
results = context.run_checkpoint('orders_checkpoint')Milloin mitäkin käytetään
- dbt-testit — ensisijainen valinta, kun käytätte jo dbt:tä; kevyt ja perustuu pelkkään SQL:ään
- Great Expectations — kun tarvitsette monipuolisia raportteja, laajempia väitteitä tai muita kuin SQL-muotoja (CSV/parquet)
Testien vakavuus
dbt 1.0+ tukee warn- ja error-vakavuustasoja:
- accepted_values:
values: [...]
config:
severity: warn
warn_if: ">100"
error_if: ">1000"Integrointi CI:hin
Suorittakaa testit jokaisessa PR:ssä ja estäkää yhdistäminen testin epäonnistuessa:
# GitHub Actions
- run: dbt deps && dbt build --profiles-dir profiles
- if: failure()
run: echo "::error::dbt tests failed"Tietojen laadun koontinäytöt
dbt-utils, dbt-expectations ja Elementary voivat muuntaa testitulokset Grafana- tai Looker-koontinäytöksi.
Skeematestit vai rivitestit
Havaitkaa skeeman regressiot dbt:n saraketyyppien "snapshotilla"; rivitestit löytävät tiedoissa olevat virheet.
Kertaus
Testaus muuttaa SQL:n asenteesta "luottakaa minuun" muotoon "varmistettu".
- dbt-testit deklaratiiviseen testaukseen tietovarastossa
- Great Expectations laajempaan ja monipuolisempaan testaukseen
- Suorittakaa testit CI:ssä ja estäkää eteneminen epäonnistumisen yhteydessä
- Seuratkaa tuloksia ajan mittaan
Pikatarkistus
Haluatte dbt-testin, joka epäonnistuu, jos millä tahansa rivillä on total < 0. Mikä on yksinkertaisin tapa toteuttaa se?
Opi SQL tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 46
- Oppitunnit
- 183
Usein kysytyt kysymykset
Onko oppitunti ”SQL:n testaaminen: dbt-testit ja Great Expectations” ilmainen?
Kyllä – oppitunnin ”SQL:n testaaminen: dbt-testit ja Great Expectations” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko SQL Academy-kurssin, päivitä CoddyKit PROhon. SQL Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”SQL:n testaaminen: dbt-testit ja Great Expectations”?
Kirjoita tietojen laatua testaavia dbt-testejä (unique, not_null, accepted_values) ja monipuolisempia tarkistuksia Great Expectationsilla. Harjoittelet SQL Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni SQL Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin SQL Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”SQL:n testaaminen: dbt-testit ja Great Expectations”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä SQL Academy-oppitunnilla?
Kyllä. Jokainen SQL Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- DBT:n (Data Build Tool) perusteet
- SQLFluff ja linttaus
- SQL:n testaaminen: dbt-testit ja Great Expectations
- Skeemamuutosten CI (GitHub Actions)