Wprowadzenie do testowania w dbt

dbt średnio zaawansowany

Mike Metzger

Data Engineer

Czym jest test?

  • Asercje / walidacje obiektów dbt
    • Modele
    • Źródła i ziarna (seeds)
  • Służą do weryfikacji poprawności danych
    • Wartości null
    • Wartości w zakresie
    • Relacje między danymi
    • Testy niestandardowe (omówione później)
dbt średnio zaawansowany

Typy testów

dbt oferuje trzy rodzaje testów

  1. Wbudowane (4 predefiniowane)
  2. Jednostkowe (Singular)*
  3. Ogólne (Generic)*

$$

  • omówione później
dbt średnio zaawansowany

Testy wbudowane

  • unique
    • Weryfikuje unikalność wszystkich wartości
  • not_null
    • Weryfikuje, że żadna wartość nie jest null
  • accepted_values
    • Weryfikuje, że wartości należą do określonej listy
    • values: [a, b, c, d]
  • relationships
    • Weryfikuje połączenie z określoną tabelą / kolumną
    • to: ref('table')
    • field: id
dbt średnio zaawansowany

Gdzie stosować testy?

  • models/model_properties.yml
    • Plik może mieć dowolną nazwę
    • models/schema.yml
  • Zdefiniowane w podsekcji tests:
version: 2

models:
  - name: taxi_rides_raw
    columns:
      - name: tpep_pickup_datetime
        tests:
          - not_null
      - name: payment_type
        tests:
          - not_null
          - accepted_values:
              values: [1, 2, 3, 4, 5, 6]
dbt średnio zaawansowany

Uruchamianie testów

  • dbt test
    • dbt test --select modelname
  • Weryfikacja wyników
  • W przypadku błędu sprawdź skompilowany SQL

Wynik nieudanego testu dbt

dbt średnio zaawansowany

Znajdowanie błędów

  1. Znajdź skompilowany kod SQL
  2. W katalogu target/compiled/projectname/models/model_properties.yml
    • target/compiled/nyc_yellow_taxi/models/model_properties.yml/
  3. Znajdź odpowiedni plik .sql (pasujący do nieudanego testu)
  4. Skopiuj zawartość do klienta bazy danych i zlokalizuj błąd
  5. Usuń błędne dane i ponownie uruchom dbt run / dbt test
dbt średnio zaawansowany

Czas na ćwiczenia!

dbt średnio zaawansowany

Preparing Video For Download...