azure 如何动态设置Parquet列名称

yh2wf1be  于 2023-01-09  发布在  其他
关注(0)|答案(1)|浏览(119)

我想在Azure Synapse管道中合并多个csv文件。我将通过复制活动实现它,但我面临着一个问题。
有两种类型的源文件。一种有头文件(文件类型是"有头"),另一种没有头文件(文件类型是"无头")。
我想用"with header"文件的头设置方案,但是我不知道怎么做。
我认为,可以通过以下方式实现,可能吗?
1.使用"查找活动"获取文件"带标头"的列名列表。
2.将列名列表设置为数组类型的变量。
3.使用变量在"复制活动"中Map并合并多个文件。
可以使用列名列表进行Map吗?
等待您的帮助。任何答案将不胜感激。
谢谢你。
它被输入到问题的详细信息中。

2mbi3lxu

2mbi3lxu1#

可以使用列名列表进行Map吗?
不可以,您不能在动态Map中使用列列表,您需要在json表单中指定Map,如下所示

{
    "source": {
        "name": "Id",
        "type": "String",
        "physicalType": "String"
        },
    "sink": {
        "name": "Id",
        "type": "String",
        "physicalType": "String"
        }
}

我想用"with header"文件的头设置方案,但是我不知道怎么做。

    • 在您的方案中,首先需要隔离with headerwithout header等文件**

之后,首先需要使用Get Metadata活动获取不带标头的文件列表。

然后使用foreach activity将头添加到其中,并将schema添加到每个文件,dataflow现在将get metadata的输出传递给for-each活动。

在此之后,采取数据流活动,并添加标题到文件,然后在文件上创建标题列,例如

  • without header文件设置为源1,不要选择第一行作为标题.

  • header文件设置为源2,不要选择第一行作为标题.

  • SurrogateKey1活动中,输入row作为关键字列,输入**2**作为起始值。

  • SurrogateKey2活动中,输入row作为关键字列,输入**1**作为起始值。

  • 然后我们可以在Union1活动上合并SurrogateKey1流和SurrogateKey2流。

  • 然后,我们可以在Sort1活动中按row对这些行进行排序。

  • 然后在接收器Map中删除行列并将其保存到带有标题文件夹的文件中:

成功执行:

    • 现在您可以合并带有标题的文件。**

相关问题