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

Семантическая структура

Файлы и папки

Первое, что вам нужно определить, это как вы будете последовательно структурировать ваш код. Есть две рекомендуемые лучшие практики на выбор:

  • 🏡 Разместите код семантического слоя в системе "один YAML-файл на модель хранилища".
    • Объединяет документацию, тесты данных, модульные тесты, семантические модели и метрики в единый файл, соответствующий модели хранилища, созданной с помощью dbt.
    • Обменивает больший размер файла на меньшее количество переходов между файлами.
    • Проще для новых проектов, которые строят семантический слой вместе с моделями dbt.
  • 🏘️Создайте подпапку с названием models/semantic_models/.
    • Создайте параллельную структуру файлов и папок специально для кода семантического слоя.
    • Предоставляет более целенаправленные файлы, но может потребовать более частого переключения между файлами.
    • Лучше для миграции больших существующих проектов, так как вы можете быстро увидеть, какие хранилища были закодированы в семантическом слое.

Переключаться между этими подходами не так уж сложно (это можно сделать с помощью относительно простого скрипта оболочки), и это чисто решение, основанное на предпочтениях ваших разработчиков (т.е. оно не влияет на выполнение или производительность), поэтому не чувствуйте себя привязанными к какому-либо из путей. Просто выберите тот, который кажется правильным, и вы всегда можете изменить его в будущем, если передумаете.

подсказка

Убедитесь, что все семантические модели и метрики сохранены в каталоге, определенном в model-paths (или в его подкаталоге, например, models/semantic_models/). Если вы сохраните их за пределами этого пути, это приведет к созданию пустого файла semantic_manifest.json, и ваши семантические модели или метрики не будут распознаны.

Именование

Далее, установите систему для последовательного именования файлов:

  • 1️⃣ Если вы используете один YAML-файл на хранилище, то у вас будет orders.sql и orders.yml.
  • 📛 Если вы используете подход с параллельной подпапкой, для уникальности имен файлов рекомендуется использовать префикс sem_, например, sem_orders.yml для выделенной семантической модели и метрик, которые строятся на основе orders.sql и orders.yml.

Не можете определиться?

Начните с выделенной подпапки для ваших семантических моделей и метрик, а затем, если вы обнаружите, что тратите много времени на переключение между файлами, вы всегда можете перейти к системе "один YAML-файл на хранилище". Наша внутренняя команда по работе с данными обнаружила, что подход с выделенной подпапкой более управляем для миграции существующих проектов, и это подход, который использует наша документация, так что если вы не можете выбрать, следуйте этому пути.

0