Я пытаюсь настроить систему ETL с помощью GNU Make 3,81. Идея состоит в том, чтобы преобразовать и загрузить только то, что необходимо после изменения исходных данных.gnu make зависимости для обработки данных
макет каталога моего проекта выглядит следующим образом:
${SCRIPTS}/ <- transform & load scripts
${DATA}/incoming/ <- storage for extracted data
${DATA}/processed/ <- transformed, soon-to-be-loaded data
Мой $ {TRANSFORM_SCRIPTS}/Makefile заполнена с утверждениями, как это:
A_step_1: ${SCRIPTS}/A/do_step_1.sh ${DATA}/incoming/A_files/*
${SCRIPTS}/A/do_step_1.sh ${DATA}/incoming/A_files/* > ${DATA}/processed/A.step_1
A_step_2: ${SCRIPTS}/A/do_step_2.sh ${DATA}/processed/A.step_1
${SCRIPTS}/A/do_step_2.sh ${DATA}/processed/A.step_1 > ${DATA}/processed/A.step_2
B_step_1: ${SCRIPTS}/B/do_step_1.sh ${DATA}/incoming/B_files/*
${SCRIPTS}/B/do_step_1.sh ${DATA}/incoming/B_files/* > ${DATA}/processed/B.step_1
B_step_2: ${SCRIPTS}/B/do_step_2.sh ${DATA}/processed/B.step_1
${SCRIPTS}/B/do_step_2.sh ${DATA}/processed/B.step_1 > ${DATA}/processed/B.step_2
joined: A_step_2 B_step_2
join ${DATA}/processed/A.step_2 ${DATA}/processed/B.step_2 > ${DATA}/processed/joined
Вызов `сделать присоединился к» успешно производит «присоединился «файл, который мне нужен, но он каждый раз перестраивает каждый файл, несмотря на отсутствие изменений в файлах зависимостей.
Я попытался использовать имена выходных файлов в качестве целей, но GNU Make, кажется, не знает, как справиться:
${DATA}/processed/B.step_2: ${SCRIPTS}/B/do_step_2.sh ${DATA}/processed/B.step_1
${SCRIPTS}/B/do_step_2.sh ${DATA}/processed/B.step_1 > ${DATA}/processed/B.step_2
Любые другие, чем снижается выход каждого процесса в текущем рабочем каталоге предложения? Make кажется разумным инструментом для выполнения этой работы, потому что на самом деле существует десяток источников данных и почти 100 шагов в целом, а управление зависимостями самостоятельно через файлы сценариев становится слишком сложным.
«GNU Make, похоже, не знает, как справиться»? Не могли бы вы быть более ясными, рассказать нам, что пошло не так? – Beta