对此仍然有点陌生,希望得到一些帮助。
我在 Azure Synapse Analytics 中有一个管道,它从 API 接收文件。该文件具有“Prop_0”、“Prop_1”等默认标题...而不是其第一行作为标题。
转到该集成数据集的设置,并且已选择第一行作为标题选项,但它继续使用默认列。
我该如何解决这个问题?
有什么方法可以手动映射列吗?
根据您的问题,您的文件源来自 API,上述数据集是您的目标数据集。
首先检查源文件的标头和架构是否包含正确的标头或
Prop_1
、Prop_2
、.. 等来自源本身的标头。
要检查源文件的架构,请转到源数据集并单击架构。
如果您的标头类似于 Prop_1、Prop_2...,那么这意味着这些标头来自您的源本身。因此,如果需要,您可以更改 API 中的标头。
有什么方法可以手动映射列吗?
如果您想在管道运行期间更改标头,请使用复制活动中的映射。
注意:只有当您的源是静态的(其 URI 中没有任何动态参数)时,此方法才能正确工作。它不会给接收器动态参数带来任何问题。
转到复制活动映射 -> 单击导入架构。现在,在目标中,您可以根据您的要求更改标头名称。
现在,调试管道,将生成带有新标头的文件。
如果您处理多个源页面数据并且每个页面的源架构都是相同的,
首先给出您在数据集中的任何 URI。按照上面的 URI 架构在复制活动中设置映射。
现在,转到 Pipeline JSON 并将
translator
键的对象复制到其中。
再次转到复制活动映射,然后单击动态内容并在
@json('above copied JSON')
中提供上述 JSON。
我的样品:
@json('{
"type": "TabularTranslator",
"mappings": [
{
"source": {
"name": "Prop_0",
"type": "String",
"physicalType": "String"
},
"sink": {
"name": "Id",
"physicalType": "String"
}
},
{
"source": {
"name": "Prop_1",
"type": "String",
"physicalType": "String"
},
"sink": {
"name": "Name",
"physicalType": "String"
}
},
{
"source": {
"name": "Prop_2",
"type": "String",
"physicalType": "String"
},
"sink": {
"name": "Age",
"physicalType": "String"
}
},
{
"source": {
"name": "Prop_3",
"type": "String",
"physicalType": "String"
},
"sink": {
"name": "DOB",
"physicalType": "String"
}
}
],
"typeConversion": true,
"typeConversionSettings": {
"allowDataTruncation": true,
"treatBooleanAsNumber": false
}
}
}')
这可以确保对于每个页面,即使 URI 是动态的,也会应用相同的目标架构。