Семантическая структура
Файлы и папки
Первое, что вам нужно определить, это как вы будете последовательно структурировать ваш код. Есть две рекомендуемые лучшие практики на выбор:
- 🏡 Разместите код семантического слоя в системе "один 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-файл на хранилище". Наша внутренняя команда по работе с данными обнаружила, что подход с выделенной подпапкой более управляем для миграции существующих проектов, и это подход, который использует наша документация, так что если вы не можете выбрать, следуйте этому пути.