#sql #sql-order-by #matillion
Вопрос:
У меня есть SQL в компоненте «Результат запроса в сетку», похожем на следующее: —
SELECT JOB, BATCH_ID
FROM ELT_JOBS
ORDER BY JOB, BATCH_ID ASC
Значения сохраняются в переменной сетки под названием «ПАКЕТЫ», и, несмотря на правильное применение «ПО ПОРЯДКУ», при выполнении заданий они выполняются в случайном порядке: я ожидал бы, что пакеты от 1 до 10 будут выполняться последовательно, но вместо этого они выполняются в хаотичном порядке, например, 5,3,6,10,1 и т. Д.
Чтобы исправить это, я добавил компонент Python между компонентом «Результат запроса в сетку» и компонентом «Итератор сетки», который использует следующий код: —
l_BATCH_IDS = context.getGridVariable('BATCH_IDS')
l_BATCH_IDS.sort()
context.updateGridVariable('BATCH_IDS',l_BATCH_IDS)
что устраняет проблему, но она не должна возникать в первую очередь.
Кто-нибудь еще сталкивался с этой проблемой и не могли бы вы подсказать, в чем, пожалуйста, коренная проблема?
Ответ №1:
Согласно документации, «В последовательном режиме итерации всегда будут выполняться в том же порядке, в котором данные хранятся в переменной сетки».
Если вы работаете в параллельном режиме, это может быть проблемой. В противном случае, я подозреваю, что это ошибка в версии Matillion, которую вы используете
Комментарии:
1. Спасибо за ответ. Да, по умолчанию он имеет значение последовательный и уже установлен на это. Что еще, даже если бы это было в параллельном режиме, то исправление, которое было сделано для принудительного упорядочения переменных сетки, не сработало бы, так как это применяется до итератора сетки. Учитывая, что принудительный заказ работает каждый раз и что это единственное изменение, проблема должна заключаться в чем-то другом. Хотя, похоже, вы правы, что это ошибка Матильона.