小编Mar*_*nek的帖子

Azure 数据工厂将数据流映射到 CSV 接收器导致零字节文件

我正在提高我的 Azure 数据工厂能力,比较复制活动性能与映射数据流写入 Azure Blob 存储中的单个 CSV 文件。

当我通过数据集 (azureBlobSingleCSVFileNameDataset) 通过 Azure Blob 存储链接服务 (azureBlobLinkedService) 写入单个 CSV 时,使用复制活动在我期望的 blob 存储容器中获取输出。例如,文件夹/output/csv/singleFiles 下的容器MyContainer 中的MyData.csv 的输出文件。

当我通过相同的 Blob 存储链接服务但通过不同的数据集 (azureBlobSingleCSVNoFileNameDataset) 写入单个 CSV 时,使用映射数据流,我得到以下信息:

  • MyContainer/output/csv/singleFiles(零长度文件)
  • MyContainer/output/csv/singleFiles/MyData.csv(包含我期望的数据)

我不明白为什么在使用映射数据流时会生成零长度文件。

这是我的源文件:

链接服务/azureBlobLinkedService

{
    "name": "azureBlobLinkedService",
    "type": "Microsoft.DataFactory/factories/linkedservices",
    "properties": {
        "type": "AzureBlobStorage",
        "parameters": {
            "azureBlobConnectionStringSecretName": {
                "type": "string"
            }
        },
        "annotations": [],
        "typeProperties": {
            "connectionString": {
                "type": "AzureKeyVaultSecret",
                "store": {
                    "referenceName": "AzureKeyVaultLinkedService",
                    "type": "LinkedServiceReference"
                },
                "secretName": "@{linkedService().azureBlobConnectionStringSecretName}"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

数据集/azureBlobSingleCSVFileNameDataset

{
    "name": "azureBlobSingleCSVFileNameDataset",
    "properties": {
        "linkedServiceName": …
Run Code Online (Sandbox Code Playgroud)

azure-data-factory azure-blob-storage azure-data-factory-2

5
推荐指数
1
解决办法
1431
查看次数

在 Azure 数据工厂映射数据流中使用参数化数据集

通过数据工厂映射数据流引用时,我无法使用参数化数据集。

我正在尝试编写一个通用 ELT 管道,该管道将从 blob 存储中的 CSV 文件读取并将其写入 Azure SQL 数据库中的表。

使用复制活动时,一切正常(请参阅管道“使用复制活动将 CSV 文件导入通用 SQL 表”)。

从 blob 存储中读取 CSV 文件(作为参数传递到数据工厂管道中的文件名)。CSV 文件的结构是使用获取元数据活动确定的。

CSV 文件的结构被传递给 SQL Server 存储过程,该存储过程定位与 CSV 文件具有相同结构的视图。如果不存在具有相同结构的视图,则会创建表和视图。在任何一种情况下,模式名称和视图名称都会传递回管道。然后读取 CSV 文件的内容并将其写入 SQL Server 视图。

这很有效,但我没有机会向每个写入的行添加元数据。所以我创建了一个映射数据流,它将使用派生列转换添加元数据(数据工厂名称、数据工厂管道名称、数据工厂管道运行 ID)。

当我尝试调试数据流时,出现错误"An error occurred, please view notification for more details." 我无法找到任何提供有关错误信息的通知。

当我使用带有硬编码文件名的数据集时,数据流有效。当我切换到参数化数据流(传入参数,如 pipeline().DataFactory 等)时,就会出现错误。

我已经尝试对映射数据流参数值进行硬编码,但仍然没有乐趣。

模板通过了验证,但如果我尝试通过触发管道来运行管道“使用数据流将 CSV 文件导入通用 SQL 表”,它会很快失败并给我一条神秘的错误消息:

ErrorCode=InvalidTemplate, ErrorMessage=Unable to parse expression 'body('Copy Generic CSV Source to Generic SQL SinkComposeRuntimeVariables')?.Copy Generic CSV Source to Generic SQL Sinkd7ea532482e64afc88501b46924214b3?.ReadFromSourceCSVFileInBlobStorage.FileName'
Run Code Online (Sandbox Code Playgroud)

有任何 Azure 数据工厂专家愿意伸出援手吗?

所有源代码均可在 …

azure-data-factory azure-data-factory-2

4
推荐指数
2
解决办法
2102
查看次数