ETL-моделирование зависимостей с циклами - DAG может быть недостаточно - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь смоделировать график, который показывает зависимости процесса ETL.Этот процесс ETL имеет рабочие места, которые зависят от других рабочих мест.Каждое задание имеет входные файлы и выходные файлы.Некоторые выходные файлы отправляются на другой сервер после их создания, который я считаю частью ETL и в котором выполняется вход.

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

Таким образом, у меня есть информация:

  • ETL JobName
  • ETL DAG (здесь нет циклов, по крайней мере, с точки зрения порядка выполнения заданий)
  • Список + порядок всех файлов, обрабатываемых как ввод для каждого задания (имя задания / путь к файлу)
  • Список + порядок всех файлов, обрабатываемых как вывод для каждого задания (имя задания / путь к файлу)
  • Список + порядоквсе файлы, отправленные каждым заданием (имя задания, из / в путь)

Что касается имеющейся у меня информации, вот пример:

  • Job2 зависит от Job1
  • Job1 читает в FileA.
  • Job1 записывает FileA
  • Job1 записывает FileB
  • Job2 читает в FileA.
  • Job2 пишетФайл FileA (предположительно, после его обновления)
  • Job2 передает FileA на ServerX.

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

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

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

Думать, что эта проблема не является уникальной для моей команды, и удивляться, как другиерешено, если они столкнулись с этим.FWIW - Я нахожусь в среде, где установка программного обеспечения может быть проблемой, поэтому общий подход / стратегия, вероятно, был бы более полезным в моем контексте, хотя, если уже есть инструменты, которые могли бы приспособиться к этому, я бы тоже заинтересовался ими.

...