Аналітична інженерія в англійській мові: dbt, моделі даних і комунікація з зацікавленими сторонами

Вивчіть англійську лексику, яку використовують інженери з аналітики — dbt models, ref(), marts, staging layers, data lineage, а також те, як повідомляти про роботу з даними зацікавленим особам.

Аналітична інженерія розташована між інженерією даних і аналізом даних. Аналітичні інженери перетворюють необроблені дані в чисті, надійні моделі, які можуть використовувати аналітики і бізнес-партнери. Сучасний аналітичний інженерний стек домінує dbt (інструмент побудови даних), і словник став стандартом у всій індустрії. Цей посібник містить ключові англійські терміни і шаблони спілкування.

dbt Словник

TermDefinition
ModelA SQL file that defines a transformation — dbt compiles and runs it as a SELECT statement
ref()A dbt function that creates a dependency reference between models (e.g. ref('stg_orders'))
MaterialisationHow a model is stored: table, view, incremental, or ephemeral
SourceA raw table ingested from an external system, declared in dbt for documentation and freshness testing
SeedA CSV file loaded into the data warehouse as a table, used for lookup data
TestAn automated check on a model’s data (e.g. uniqueness, not-null, referential integrity)
LineageThe visual graph showing how data flows between sources and models
Schema YAMLA YAML file that documents models, columns, and tests

Триповерхова архітектура

Більшість проектів dbt використовують тришарову конвенцію:

  1. ** Staging (stg_) ** — очищення і перейменування сирих даних джерела; одна модель стажування на таблицю джерела. “Моделі стадіонарного відтворення повинні застосовувати лише перейменування, відтворення і базове очищення — без бізнес- логіки.”

  2. ** Intermediate (int_) ** — Об’ єднання і зміна форми моделей стадіонарних даних для створення корисних проміжних наборів даних. “Проміжні моделі не доступні кінцевим користувачам — вони є будівельними блоками для marts.”

  3. ** Mart (mart_ або fct_ / dim_) ** — Остаточні, бізнес- орієнтовані моделі. Це те, що аналітики запитують. fct_orders mart є єдиним джерелом правди для метрики рівня замовлення.”

ref () на практиці

Функція ref() є центральною для керування залежностями dbt. Коли ви пишете ref('stg_customers'), dbt знає, як побудувати stg_customers перед поточною моделлю.

“Ми використовуємо ref() замість твердих назв таблиць, щоб dbt міг керувати порядком збирання і правильно розв’ язувати схеми, специфічні для середовища.”

Контрактна мова даних

** Договір щодо даних ** — це угода між виробником даних і споживачем даних щодо схеми, свіжості і якості набору даних.

TermMeaning
Data contractA formal specification of what a dataset will contain and how it will behave
SchemaThe column names, data types, and structure of a table
Freshness SLAHow up-to-date the data must be (e.g. updated within 6 hours)
Breaking changeA change to a data model that would break downstream consumers
Backward compatibilityA model change that doesn’t break existing consumers
Data catalogueA searchable inventory of available datasets with documentation

** Контрактні мовні шаблони: **

  • “Модель fct_revenue регулюється договором про дані — будь- які зміни до назв стовпчиків або типів даних повинні проходити через процес перегляду.”
  • “Це зміна, яка перерве цю практику: перейменування customer_id на user_id вимагатиме від всіх нижніх користувачів оновити свої запити.”

Фрази комунікації зацікавлених осіб

Інженери з аналітики часто перекладають між технічним світом SQL і бізнес-світом KPI і рішень. Мова повинна з’єднувати обидва.

** Пояснення моделі даних для бізнес-зацікавлених сторін: **

  • “Таблиця fct_orders є вашим єдиним джерелом правди для даних замовлень — все, що ви бачите на панелі доходів, побудовано з цієї моделі.”
  • “Коли ви фільтруєте за order_status = 'completed', ви дивитеся на замовлення, які були повністю доставлені і фактуровані.”

** Пояснення проблеми з якістю даних: **

    • “Ми помітили деякі розбіжності між панеллю управління і фінансовим звітом. Після розслідування, ми виявили, що фінансовий звіт використовував інше визначення «активного клієнта» — ми вирівнюємо визначення зараз. *

Встановлення очікувань щодо свіжості даних:

    • “Ця панель оновлюється кожні чотири години. Для цифр в реальному часі, вам потрібно буде запитати систему джерела безпосередньо - але для щоденного і щотижневого звітів, даних mart достатньо.”*

Приклади висловлювань

  1. «Модель стаджування для джерела замовлень застосовує лише типове відливання і перейменування стовпців — вся бізнес-логіка відкладається на рівень mart»
  2. «Ми використовуємо ref('stg_customers') в проміжній моделі, щоб dbt могла правильно вивести порядок збирання і запобігти поширенню застарілих даних вниз по течії»
  3. «Контракт даних для fct_revenue вказує, що стовпець revenue_usd завжди номінований в доларах США і ніколи не є нульовим — будь-яка зміна вгору, яка порушує це, викликає попередження»
  4. «Аналіз лінії показав, що запропонована зміна схеми на stg_products порушила б 14 моделей нижче по течії по трьох март-таблицях — ми повідомили це командам споживання»
  5. «Після перегляду зацікавлених сторін, ми погодилися додати reporting_category колонку до маркету, що дозволить команді продукту фільтрувати прибуток за новою таксономією бізнес-сегменту»

Навигація зворотного зв’язку — практичний приклад

Будьмо чесними, ефективне спілкування про вашу роботу як інженера-аналітика не тільки про знання технічних термінів; це про їх чітке вираження і конструктивне отримання зворотнього зв’язку. Поширеним сценарієм є коментар перегляду коду, який спочатку здається критичним, але містить цінну інформацію щодо поліпшення ваших моделей dbt або потоку даних. Як нерідні носії, ми іноді інтерпретуємо пряму критику як особистий суд над нашими здібностями, а не можливість для росту. Визнаючи цю різницю – розглядаючи коментар як вхід на роботу, а не на вашу – це ключ.

Одна з найчастіших фраз, з якими ви зіткнетеся, це «Розгляньте рефакторинг…» Це не обов’язково засудження вашого існуючого коду. Це часто сигналізує про пропозицію покращити ефективність, читабельність або підтримку. Замість того, щоб оборонно відкидати це, спробуйте відповісти щось на зразок: “Дякую за відгук. Я дякую за пропозицію щодо ref(). Можеш розібратися, що саме ти хочеш, щоб я змінив? Зрозуміти логіку ваших рекомендацій допоможе мені впевнитися, що я будую сталу і ефективну модель боргу». Зауважте, як ми змінили фокус – від нашого початкового відчуття оборони до справжнього бажання прояснити. Аналогічно, коли обговорюєте «шари стаджування» або «марти», будьте готові пояснити * чому * ви структурували свої дані таким чином. Зацікавлені сторони потребують контексту; просто заявивши «це як я побудував це» не зменшить його. Використовуйте аналогії - можливо, пов’язуючи стадіонний шар з фундаментом будівлі - і чітко сформулюйте переваги кожного вибору дизайну, наприклад, поліпшення продуктивності запиту або спрощений аналіз нижче.

Основна вправа тут не тільки в освоєнні самого словника, але й в навчанні формувати технічні дискусії таким чином, щоб підкреслювати ясність і співпрацю. Пам’ятайте, що зацікавлені сторони часто не мають такого ж рівня технічних деталей, як ви, тому спрощення є ключовим. Не впадайте в пастку використання надто складного жаргону без пояснень. Якщо хтось запитує про «походження даних», надайте коротке візуальне представлення, якщо можливо, навіть діаграму dbt, і поясніть, як це допомагає їм зрозуміти, звідки походять їхні дані і як вони перетворюються. Це активне спілкування будує довіру і забезпечує, що всі знаходяться на одній сторінці.

-- Example of a simple dbt model to illustrate data lineage (simplified)
{{ config(material='dbt_models') }}

WITH source_data AS (
    SELECT * FROM staging.raw_customer_data
),
transformed_data AS (
    SELECT
        customer_id,
        customer_name,
        -- Example transformation - calculating total order value
        SUM(order_total) AS total_spent
    FROM source_data
    GROUP BY customer_id, customer_name
)

SELECT *
FROM transformed_data;

Поширені запитання

Про що ця стаття "Аналітична інженерія в англійській мові: dbt, моделі даних і комунікація з зацікавленими сторонами"?

Вивчіть англійську лексику, яку використовують інженери з аналітики — dbt models, ref(), marts, staging layers, data lineage, а також те, як повідомляти про роботу з даними зацікавленим особам.

Чи безкоштовна ця стаття?

Так. Усі статті на CoderSlingo, включно з цією, доступні безкоштовно без реєстрації.

Скільки часу займає читання "Аналітична інженерія в англійській мові: dbt, моделі даних і комунікація з зацікавленими сторонами"?

Приблизно 8 min.