Azure Data Factory выбирает свойство «status»: «Succeeded» из предыдущего действия - PullRequest
0 голосов
/ 02 октября 2018

с фабрикой данных V2 Я пытаюсь реализовать поток копирования данных из одной базы данных SQL Azure в другую.

Я хочу выполнить условное действие If Condition, зависит от успеха предыдущегодействия выполняются конвейером, но в выражении, которое будет включено в действие If Condition Я не могу выбрать выходное свойство "status": "Succeeded".

До действия If Condition У меня есть две операции копирования данных.

Я добавил операцию If Condition в свой поток, поскольку задачи, выполняемые после копирования данных, зависят от успеха всех операций копирования.

т.е.1016 *

если все операции копирования выполнены правильно, то будет выполнено истинное условие.Если только одна операция копирования успешна, а другая не выполнена, то выполняется ложное условие

Вывод каждой операции копирования выглядит следующим образом:

Output
{
    "dataRead": 213156,
    "dataWritten": 213156,
    "rowsRead": 3554,
    "rowsCopied": 3554,
    "copyDuration": 4,
    "throughput": 52.04,
    "errors": [],
    "effectiveIntegrationRuntime": "DefaultIntegrationRuntime (West Europe)",
    "usedDataIntegrationUnits": 4,
    "usedParallelCopies": 1,
    "executionDetails": [
        {
            "source": {
                "type": "AzureSqlDatabase"
            },
            "sink": {
                "type": "AzureSqlDatabase"
            },
            "status": "Succeeded",
            "start": "2018-10-02T13:42:37.7396813Z",
            "duration": 4,
            "usedDataIntegrationUnits": 4,
            "usedParallelCopies": 1,
            "detailedDurations": {
                "queuingDuration": 3,
                "preCopyScriptDuration": 0,
                "timeToFirstByte": 0,
                "transferDuration": 1
            }
        }
    ]
}

И я структурировал свое выражение для If Condition активность так:

@and(equals(activity('Copy_Activity1').output.executionDetails[3],'Succeeded'), equals(activity('Copy_Activity2').output.executionDetails[3],'Succeeded'))

Но он выдает мне следующую ошибку:

"error": {
    "code": "InvalidTemplate",
    "message": "Unable to process template language expressions in action 'If Condition1' inputs at line '1' and column '1294': 'The template language expression 'and(equals(activity('Copy_Item_Budget_Name').output.executionDetails[3],'Succeeded'), equals(activity('Copy_Item_Budget_Entry').output.executionDetails[3],'Succeeded'))' cannot be evaluated because array index '3' is outside bounds (0, 0) of array. Please see https://aka.ms/logicexpressions for usage details.'."
}

Но даже с помощью гида я не могу решить проблему.

Кто-нибудь знает, как решить проблему?Спасибо

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

Из выходных данных executionDetails - это массив только с одним элементом, который содержит объект.Поэтому выражение должно быть: activity('Copy_Activity1').output.executionDetails[0].status.

0 голосов
/ 08 октября 2018

Если вам требуется выполнить некоторые действия после ВСЕХ операций копирования, успешно выполненных , ответ Johns-305. на самом деле правильный.

Вот пример с более подробной информацией.Операции копирования: activity 1 и activity 2, другие действия, выполняемые после них: activity 3 и activity 4, без зависимости между activity 3 и activity 4.Действия должны быть связаны, как показано на рисунке ниже.Помните, что activity 3 и activity 4 не будут выполняться дважды, они будут выполняться только после успешного выполнения и из activity 1 и activity 2.Activity graph of the example

0 голосов
/ 02 октября 2018

Для ясности это не то, как управление потоками работает в ADF.

Вам не нужно запрашивать результат предыдущей фигуры, вместо этого вы изменяете Activity Connector на ответвление на основе результата.

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

Вы можете связать любое количество действий до и после него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...