NULL передается из конвейера в базовую базу связанной службы

#azure-data-factory #azure-data-factory-2 #azure-data-factory-pipeline

#azure-data-factory #azure-data-factory-2 #azure-data-factory-pipeline

Вопрос:

У меня есть конвейер, который будет перебирать файлы и копировать их в хранилище.

baseUrl и relativeURL хранятся в файле json.

Я могу прочитать в этом файле, и он действителен.

Я параметризовал базовую базу связанной службы, и это работает при тестировании из связанной службы и из набора данных.

Однако, когда я пытаюсь отладить конвейер, я получаю сообщение об ошибке:

«code»: «BadRequest»
«message»: null
«target»: «pipeline // runid/310b8ac1-2ce6-4c7c-a1ad-433ee9019e9b»
«подробности»: null
«ошибка»: null

Похоже, что из действия в конвейере вместо baseUrl передается значение null.

Я повторил значения из моего файла конфигурации, и он считывается, и значения верны. Действительно кажется, что конвейер не передает правильное значение для baseUrl.

Должен ли я изменять код json за конвейером, чтобы заставить это работать?

Если это поможет, json для связанной службы, набора данных и конвейера приведены ниже:

—Связанная служба:

 {
"name": "ls_http_opendata_ecdc_europe_eu",
"properties": {
    "parameters": {
        "baseURL": {
            "type": "string"
        }
    },
    "annotations": [],
    "type": "HttpServer",
    "typeProperties": {
        "url": "@linkedService().baseURL",
        "enableServerCertificateValidation": true,
        "authenticationType": "Anonymous"
    }
}
}
 

—набор данных

 {
"name": "ds_ecdc_raw_csv_http",
"properties": {
    "linkedServiceName": {
        "referenceName": "ls_http_opendata_ecdc_europe_eu",
        "type": "LinkedServiceReference"
    },
    "parameters": {
        "relativeURL": {
            "type": "string"
        },
        "baseURL": {
            "type": "string"
        }
    },
    "annotations": [],
    "type": "DelimitedText",
    "typeProperties": {
        "location": {
            "type": "HttpServerLocation",
            "relativeUrl": {
                "value": "@dataset().relativeURL",
                "type": "Expression"
            }
        },
        "columnDelimiter": ",",
        "escapeChar": "\",
        "firstRowAsHeader": true,
        "quoteChar": """
    },
    "schema": []
}
}
 

—конвейер

 {
"name": "pl_ingest_ecdc_data",
"properties": {
    "activities": [
        {
            "name": "lookup ecdc filelist",
            "type": "Lookup",
            "dependsOn": [],
            "policy": {
                "timeout": "7.00:00:00",
                "retry": 0,
                "retryIntervalInSeconds": 30,
                "secureOutput": false,
                "secureInput": false
            },
            "userProperties": [],
            "typeProperties": {
                "source": {
                    "type": "JsonSource",
                    "storeSettings": {
                        "type": "AzureBlobStorageReadSettings",
                        "recursive": true,
                        "enablePartitionDiscovery": false
                    },
                    "formatSettings": {
                        "type": "JsonReadSettings"
                    }
                },
                "dataset": {
                    "referenceName": "ds_ecdc_file_list",
                    "type": "DatasetReference"
                },
                "firstRowOnly": false
            }
        },
        {
            "name": "execute copy for every record",
            "type": "ForEach",
            "dependsOn": [
                {
                    "activity": "lookup ecdc filelist",
                    "dependencyConditions": [
                        "Succeeded"
                    ]
                }
            ],
            "userProperties": [],
            "typeProperties": {
                "items": {
                    "value": "@activity('lookup ecdc filelist').output.value",
                    "type": "Expression"
                },
                "activities": [
                    {
                        "name": "Copy data1",
                        "type": "Copy",
                        "dependsOn": [],
                        "policy": {
                            "timeout": "7.00:00:00",
                            "retry": 0,
                            "retryIntervalInSeconds": 30,
                            "secureOutput": false,
                            "secureInput": false
                        },
                        "userProperties": [],
                        "typeProperties": {
                            "source": {
                                "type": "DelimitedTextSource",
                                "storeSettings": {
                                    "type": "HttpReadSettings",
                                    "requestMethod": "GET"
                                },
                                "formatSettings": {
                                    "type": "DelimitedTextReadSettings"
                                }
                            },
                            "sink": {
                                "type": "DelimitedTextSink",
                                "storeSettings": {
                                    "type": "AzureBlobFSWriteSettings"
                                },
                                "formatSettings": {
                                    "type": "DelimitedTextWriteSettings",
                                    "quoteAllText": true,
                                    "fileExtension": ".txt"
                                }
                            },
                            "enableStaging": false,
                            "translator": {
                                "type": "TabularTranslator",
                                "typeConversion": true,
                                "typeConversionSettings": {
                                    "allowDataTruncation": true,
                                    "treatBooleanAsNumber": false
                                }
                            }
                        },
                        "inputs": [
                            {
                                "referenceName": "DelimitedText1",
                                "type": "DatasetReference",
                                "parameters": {
                                    "sourceBaseURL": {
                                        "value": "@item().sourceBaseURL",
                                        "type": "Expression"
                                    },
                                    "sourceRelativeURL": {
                                        "value": "@item().sourceRelativeURL",
                                        "type": "Expression"
                                    }
                                }
                            }
                        ],
                        "outputs": [
                            {
                                "referenceName": "ds_ecdc_raw_csv_dl",
                                "type": "DatasetReference",
                                "parameters": {
                                    "fileName": {
                                        "value": "@item().sinkFileName",
                                        "type": "Expression"
                                    }
                                }
                            }
                        ]
                    }
                ]
            }
        }
    ],
    "concurrency": 1,
    "annotations": []
}
}
 

Ответ №1:

Я воспроизвел вашу ошибку.

{"code":"BadRequest","message":null,"target":"pipeline//runid/abd35329-3625-490b-85cf-f6d0de3dac86","details":null,"error":null}

Это потому, что вы не передали свой baseUrl службе link в исходном наборе данных. Пожалуйста, сделайте это:

введите описание изображения здесь

И код JSON Dataset должен быть таким:

 {
    "name": "ds_ecdc_raw_csv_http",
    "properties": {
        "linkedServiceName": {
            "referenceName": "ls_http_opendata_ecdc_europe_eu",
            "type": "LinkedServiceReference",
            "parameters": {
                "baseURL": {
                    "value": "@dataset().baseURL",
                    "type": "Expression"
                }
            }
        },
        "parameters": {
            "relativeURL": {
                "type": "string"
            },
            "baseURL": {
                "type": "string"
            }
        },
        "annotations": [],
        "type": "DelimitedText",
        "typeProperties": {
            "location": {
                "type": "HttpServerLocation",
                "relativeUrl": {
                    "value": "@dataset().relativeURL",
                    "type": "Expression"
                }
            },
            "columnDelimiter": ",",
            "escapeChar": "\",
            "firstRowAsHeader": true,
            "quoteChar": """
        },
        "schema": []
    }
}
 

Комментарии:

1. Спасибо. предоставленный мной json-файл dataset был сгенерирован редактором, а не изменен мной каким-либо образом. могут быть обстоятельства, при которых он выдает неверный json, как кажется.