Azure 数据工厂数据流 - 强制标头变为大写以进行映射

问题描述 投票:0回答:1

我在数据工厂中有一个将使用数据流的管道。计划是:

将 .xlsx 文件从 Blob 存储加载到数据流中

将数据传入雪花水槽表

我遇到的问题是,此数据流将位于 ForEach 容器内,以针对 .xlsx 文件中的每个工作表运行数据流。 .xlsx 文件中的标题并非全部大写,而 Snowflake 中的列标题全部大写,因此数据流无法自动映射它们,因为它们区分大小写。

有没有办法将 .xlsx 文件中的列标题修改为全部大写,并覆盖已有的标题,而不是创建新标题?我在网上查了一下,这个应该可以做到。源和接收器之间的派生列,读取每一列,并将它们重写为 upper()

enter image description here

然而,这似乎不起作用。当我查看“检查”选项卡时,它显示列已被标记为已更新,但它们不是大写的:

enter image description here

这意味着由于它不是大写,它无法自动映射到全部大写的雪花表标题。

有没有人遇到过类似的情况,以及解决方法?

snowflake-cloud-data-platform azure-data-factory google-cloud-dataflow
1个回答
0
投票

您使用了错误的转换来满足您的要求。具有上述配置的派生列会将这些列中的所有字符串行转换为大写。它不会更改这些列名称的大小写。要动态处理列名称,请使用选择转换和基于规则的映射,如下所示。

在源之后进行选择转换并取消选中自动映射。现在,单击添加映射。如果源投影中导入了模式,它将显示两个选项:固定映射基于规则的映射。在这些中选择基于规则的映射。如果源模式未导入且为空,则默认情况下会自动显示基于规则的映射。

在基于规则的映射中,如要将所有列的大小写更改为大写,可以在条件中给出表达式

true()
,并给出表达式
upper($$)
,如下所示。

enter image description here

这将更改所有列的大小写,您可以在选择转换的检查选项中检查这些列。

enter image description here

此处,第

AGE
列已为大写,因此未更新。如果您只想更改字符串列的大小写,可以在选择条件中使用此表达式
type=="string"
。在此之后添加您的雪花水槽,它将按预期进行映射。

© www.soinside.com 2019 - 2024. All rights reserved.