Когда я копирую данные 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.