При копировании данных Rest API в ADF V2 отсутствует collectionReference в конвейерном коде json. - PullRequest
0 голосов
/ 19 мая 2019

Когда я копирую данные API Rest в Azure SQL, возникает странная проблема.Если я использую Wizard для генерации конвейера, он может скопировать 8 записей.Если я делаю крошечную модификацию или клонирую ее, обновленный конвейер копирует только 1 запись.

Rest API возвращает формат данных:

{
    "data": [       
        {
            "taskId": 1,
            "taskName": "abc"
        },
        {
            "taskId": 2,
            "taskName": "efg"
        },
        {
            "taskId": 3,
            "taskName": "ggg"
        }
    ],
    "error": "success",
    "error_Description": "successful"
}

В отображении я нажал «Ссылка на коллекцию»,Возвращает 8 записей и вставляет в таблицу sql.Если я изменю описание конвейера как добавление пробела и переиздаю его.Запустите это сейчас.Возвращается только 1 строка.Я думаю, что это вызвано тем, что текущий ADF не сохраняет collectionReference в файле json, и после его повторной публикации информация collectionReference теряется.

{
    "name": "pipeline3",
    "properties": {
        "activities": [
            {
                "name": "Copy_v9u",
                "type": "Copy",
                "policy": {
                    "timeout": "7.00:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "userProperties": [
                    {
                        "name": "Source",
                        "value": "api/getTask"
                    },
                    {
                        "name": "Destination",
                        "value": "[abc].[table1]"
                    }
                ],
                "typeProperties": {
                    "source": {
                        "type": "RestSource",
                        "httpRequestTimeout": "00:01:40",
                        "requestInterval": "00.00:00:00.010"
                    },
                    "sink": {
                        "type": "AzureSqlSink",
                        "preCopyScript": "truncate table abc.table1"
                    },
                    "enableStaging": false,
                    "translator": {
                        "type": "TabularTranslator",
                        "mappings": [
                            {
                                "source": {
                                    "path": "taskId"
                                },
                                "sink": {
                                    "name": "taskId",
                                    "type": "Int32"
                                }
                            },
                            {
                                "source": {
                                    "path": "taskName"
                                },
                                "sink": {
                                    "name": "taskName",
                                    "type": "String"
                                }
                            },
                            {
                                "source": {
                                    "path": "$.error"
                                },
                                "sink": {
                                    "name": "error",
                                    "type": "String"
                                }
                            },
                            {
                                "source": {
                                    "path": "$.error_Description"
                                },
                                "sink": {
                                    "name": "error_Description",
                                    "type": "String"
                                }
                            }
                        ]
                    }
                },
                "inputs": [
                    {
                        "referenceName": "SourceDataset_v9u",
                        "type": "DatasetReference"
                    }
                ],
                "outputs": [
                    {
                        "referenceName": "DestinationDataset_v9u",
                        "type": "DatasetReference"
                    }
                ]
            }
        ]
    },
    "type": "Microsoft.DataFactory/factories/pipelines"
}

Ожидание: После измененияописание или имя конвейера, он все равно должен копировать 8 записей вместо одной записи.Кроме того, json-файл конвейера должен содержать информацию collectionReference, иначе как конвейер знает, какой объект из результата API является массивом для вставки нескольких записей в таблицу sql.

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