Пока не выполняется действие в Azure Фабрике данных, даже если условие не соответствует - PullRequest
0 голосов
/ 10 июля 2020

Я использовал действие до, чтобы копировать файлы в последовательном порядке. Для этого я создал переменную, присвоил ей значение 0 и сравнил ее с количеством файлов, доступных в озере данных. Выражение, используемое в действии until, проверяет, больше ли значения переменных, чем количество файлов, пока значение переменной не станет больше, чем количество файлов, выполняется l oop. Если в озере данных не найдено ни одного файла, то значение переменной будет установлено на 1, а количество файлов будет равным 0. Но что произойдет, даже если значение переменной равно 1, а количество файлов равно нулю, до активности активности пытается выполнять внутренние действия. Любое решение для этого? Условие activity, используемое для установки значения переменной: @equals (activity (lookup) .output.firstrow.NumberOfFiles, 0), затем устанавливает переменную var1 = 1 else 0 выражение, используемое до activity: @greater (int (variables ('var1 ')), activity (lookup) .output.firstrow.NumberOfFiles) Внутри действия до: Установите переменную для увеличения значения var1 на 1

Если какие-либо предложения, были бы действительно полезны

С уважением, Сандип

Ответы [ 2 ]

0 голосов
/ 20 августа 2020

Если в озере данных не найдено ни одного файла, то значение переменной будет установлено на 1, а количество файлов будет равно 0.

выражение, используемое до activity: @greater (int (variables ('var1')), activity (lookup) .output.firstrow.NumberOfFiles)

Действие «Пока» работает по назначению.

Выражение, используемое в действии until, проверяет, превышает ли значение переменной количество файлов, пока значение переменной не станет больше, чем количество файлов, выполняется l oop.

К сожалению, ваше предположение о том, как это работает, неверно. До l oop всегда будет выполняться хотя бы один раз. В конце каждой итерации он затем проверяет свое состояние, чтобы увидеть, следует ли запускать его снова. Он не проверяет сначала условие, как вы описали.

Исправление заключается в использовании вместо этого действия ForEach до деятельности. ForEach всегда будет запускаться столько раз, сколько вам нужно, и это избавит вас от необходимости отслеживать условие l oop с помощью манипуляций с переменными.

0 голосов
/ 13 июля 2020

Согласно документации Microsoft, действие «Пока» обеспечивает те же функции, что и структура цикла «до тех пор, пока» в языках программирования.

Сначала оно будет выполнять внутренние действия один раз, а затем в соответствии с результатом выражения решить: l oop или break.

Итак, в вашей ситуации ваши внутренние действия будут выполнены один раз, а затем получат значение true и прервут действие до.

Если ваш don Если вы не хотите выполнять один раз, вы можете использовать другой If Condition activity и разрешить var1 = 1 не выполнять действие утилиты.

...