Логика столбца и трассировка происхожденияPython

Программы на Python
Ответить
Anonymous
 Логика столбца и трассировка происхождения

Сообщение Anonymous »

Я занимаюсь созданием трассировщика происхождения столбцов POC для своей команды.
Мои модели используют
  • DBT (ядро 12)
  • Snowflake
Я использую Python (3.8)
Я пытаюсь построить происхождение любого конкретного столбца при потреблении на всем пути к источнику, показать любую логику, вычисления, зависимые столбцы (их происхождение тоже), где они находятся (какая модель или слой).
В конечном итоге представить это в виде интерактивного графика, но это не требуется для POC.
Имейте в виду, что существует множество ограничений на то, что я могу установить на свое корпоративное устройство, поэтому мне приходится немного бороться. И архитектура очень сложна, с многочисленными соединениями/объединениями, макросами, снимками и т. д.
Мой первоначальный план состоял в том, чтобы использовать файлы Manifest.json и Catalogue.json (которые dbt создает при компиляции), чтобы получить приблизительную информацию о происхождении, а затем получить необходимую логику sql из каждой модели с помощью синтаксического анализатора. Но это имело некоторые проблемы (например, манифест также включает в себя закомментированную ссылку на модель, что имеет смысл, учитывая, что он анализирует необработанный текст для компиляции jinja)
Альтернативный вариант: мой текущий подход использует встроенную функцию происхождения sqlglot для каждой модели, которую я скомпилировал, очистил от комментариев и даже отформатировал, от цели до источника, и отслеживаю каждую по пути в json, а затем использую библиотеку для визуализации. Это продвигается немного медленно, но выглядит многообещающе.
Я пишу этот пост, чтобы получить предложения и советы, которые, возможно, помогут исправить мой подход к этому вопросу.
Любые положительные отзывы очень приветствуются, и отрицательные тоже, если вы вежливы :).
Пожалуйста, сообщите мне, если вам нужна дополнительная информация, или я забыл что-то упомянуть.

Подробнее здесь: https://stackoverflow.com/questions/798 ... age-tracer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»