Итератор сетки Matillion, Выполняющий Случайный порядок заданий

#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. Спасибо за ответ. Да, по умолчанию он имеет значение последовательный и уже установлен на это. Что еще, даже если бы это было в параллельном режиме, то исправление, которое было сделано для принудительного упорядочения переменных сетки, не сработало бы, так как это применяется до итератора сетки. Учитывая, что принудительный заказ работает каждый раз и что это единственное изменение, проблема должна заключаться в чем-то другом. Хотя, похоже, вы правы, что это ошибка Матильона.