Перейти к основному содержимому

Тактическая терминология

Оставшаяся часть этого руководства будет посвящена процессу миграции вашего существующего кода dbt в Semantic Layer. Для этого нам потребуется ввести некоторые новые термины и понятия, которые характерны именно для Semantic Layer.

Мы хотим определить их заранее, так как вкладываем в них конкретный смысл применительно к процессу миграции кода в Semantic Layer. Эти термины могут означать разные вещи в разных контекстах, но в рамках этого руководства мы будем понимать под ними следующее:

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

Мы также будем использовать пару новых терминов для краткости. Это не стандартные и не официальные термины dbt, но они удобны для передачи смысла в контексте рефакторинга кода под Semantic Layer:

  • 🧊 Frozen (замороженный) — условное обозначение кода, который статически формируется в логическом слое трансформаций dbt. Это не относится к типу материализации: представления (views), инкрементальные модели и обычные таблицы — всё это считается frozen, поскольку они статически генерируют данные или код, которые сохраняются в хранилище данных, в отличие от динамических запросов, как в случае с Semantic Layer. Это не плохо! Мы хотим, чтобы часть нашей логики трансформаций была замороженной и стабильной: логика трансформаций обычно не меняется быстро, и мы получаем преимущества в тестировании, производительности и стабильности.
  • 🫠 Melting (размораживание) — процесс разбиения замороженных структур на гибкий код Semantic Layer. Это позволяет динамически создавать максимально возможное количество комбинаций и агрегаций в ответ на запросы и потребности стейкхолдеров.
подсказка

🏎️ Semantic Layer — это движок денормализации. dbt трансформирует ваши данные в чистые, нормализованные витрины (marts). Semantic Layer — это движок денормализации, который динамически соединяет и «лепит» из этих строительных блоков максимально возможное количество форм на лету.

Нашли ошибку?

0