dbt sources

Средний уровень dbt

Mike Metzger

Data Engineer

Что такое dbt source?

  • Название и описание данных, загруженных в процессе EL
  • Помогает определить происхождение данных
  • Тесты
  • Документация

Источник данных

1 Фото: Mika Baumeister on Unsplash
Средний уровень dbt

Sources

  • Предоставляет информацию о происхождении данных
  • Описывает поток данных в хранилище
  • Используется функция Jinja {{ source() }}
    • Аналог функции {{ ref() }}
  • Упрощает доступ к сырым данным
select * 
from
  {{ source('raw', 'orders') }}
Средний уровень dbt

Определение источника

  • В файле .yml
  • Файл может называться models/model_properties.yml
    • Или быть любым другим .yml-файлом в директории
  • В разделе sources:
  • Назовите источник с помощью параметра - name:
  • Определите каждую таблицу источника через - name: в разделе tables:
  • Доступные параметры зависят от типа хранилища данных — см. документацию dbt.
version: 2

sources:
  - name: raw
    tables:
      - name: phone_orders
      - name: web_orders
Средний уровень dbt

Обращение к источникам

  • Используйте {{ source() }}
  • {{ source(source_name, table_name) }}
  • Возвращает корректное имя таблицы в скомпилированном запросе
select * from
  {{ source('raw', 'phone_orders') }}
UNION
select * from
  {{ source('raw', 'web_orders') }}
-- dbt compiled
select * from
  'raw'.'phone_orders'
UNION
select * from
  'raw'.'web_orders'
Средний уровень dbt

Тестирование источников

  • К источникам можно применять тесты
  • Те же методы, что и для моделей
  • Определяются в разделе sources: вместо models:
  • В .yml-файле, где описаны источники
version: 2

sources:
  - name: raw
    tables:
      - name: phone_orders
        columns:
          - name: id
            tests:
              - not_null
              - unique
      - name: web_orders
Средний уровень dbt

Давайте потренируемся!

Средний уровень dbt

Preparing Video For Download...