Тактическая терминология
Остальная часть этого руководства будет сосредоточена на процессе миграции вашего существующего кода dbt в Семантический слой. Для этого нам нужно ввести некоторые новые термины и концепции, специфичные для Семантического слоя.
Мы хотим определить их заранее, так как имеем в виду конкретные значения, применимые к процессу миграции кода в Семантический слой dbt. Эти термины могут означать разные вещи в разных контекстах, но здесь мы имеем в виду:
- 🔲 Нормализованный — может быть определен с различной степенью техническо й строгости, но здесь мы имеем в виду что-то, что содержит уникальные данные, хранящиеся только один раз в одном месте, чтобы их можно было эффективно объединять и агрегировать в различные формы. Вы можете думать об этом как о таблицах, которые функционируют как концептуальные строительные блоки в вашем бизнесе, не в смысле строгой третьей нормальной формы Кодда.
- 🛒 Март — также имеет множество определений, но здесь мы имеем в виду таблицу, которая относительно нормализована и функционирует как источник истины для ключевой концепции в вашем бизнесе.
- 🕸️ Денормализованный — когда мы храним одни и те же данные в нескольких местах для более легкого доступа без объединений. Наиболее денормализованная система моделирования данных — это OBT (One Big Table), где мы стараемся собрать все возможные интересные столбцы, связанные с концепцией (например, клиенты), в одну большую таблицу, чтобы аналитик мог просто использовать
select
. - 🗞️ Свертка — используется здесь как общий термин, означающий как денормализованные таблицы, построенные на основе нормализованных мартов, так и те, которые выполняют агрегации до определенного уровня. Например,
active_accounts_per_week
может агрегировать данныеcustomers
иorders
до недельного уровня. Другим примером может бытьcustomer_metrics
, который может денормализовать множество данных изcustomers
, а также агрегированные данные изorders
. Для краткости в этом руководстве мы будем называть все эти типы продуктов, построенных на основе ваших нормализованных концепций, свертками.
Мы также будем использовать пару новых терминов для краткости. Это не стандартные или официальные термины dbt, но полезные для передачи смысла в контексте рефакторинга кода для Семантического слоя:
- 🧊 Замороженный — сокращение для обозначения кода, который статически построен в логическом слое трансформации dbt. Не относится к типу материализации: представления, инкрементные модели и обычные таблицы считаются замороженными, так как они статически генерируют данные или код, который хранится в хранилище, в отличие от динамического запроса, как в случае с Семантическим слоем. Это не плохо! Мы хотим, чтобы часть нашей логики трансформации была замороженной и стабильной, так как логика трансформации не меняется быстро, и мы выигрываем в тестировании, производительности и стабильности.
- 🫠 Плавление — процесс разбиения замороженных структур на гибкий код Семантического слоя. Это позволяет им создавать как можно больше комбинаций и агрегаций динамически в ответ на потребности и запросы заинтересованных сторон.
🏎️ Семантический слой — это двигатель денормализации. dbt преобразует ваши данные в чистые, нормализованные марты. Семантический слой dbt — это двигатель денормализации, который динамически сое диняет и формирует эти строительные блоки в максимальное количество доступных форм динамически.