【发布时间】:2021-07-07 16:01:02
【问题描述】:
在映射数据流活动中,我有一堆来自存储帐户未处理区域的表,我的目标是仅选择其中一些列用于下一个更多处理区域。在选择列时,我需要将列名转换为更直观的名称和/或小写名称。我打算使用参数来做到这一点,所以如果我需要进行调整,我只需要在一个地方更改它。
我管理了“简单”部分 - 将相关列名列入白名单并将这些名称设为小写。但是假设我想根据字典重命名列,其中列“abc”变为“def”,“ghi”变为“jkl”。我正在尝试使用列模式在派生列转换中执行此操作。我制作了一个地图参数(我不确定它的语法是否正确):
['abc'->'def', 'ghi' -> 'jkl']
我想我需要在翻译映射中找到匹配键的索引,然后用值数组中的正确索引替换它,但似乎没有一种简单的方法可以从函数中提取索引可在https://docs.microsoft.com/en-us/azure/data-factory/data-flow-expression-functions 获得。 这是我目前所拥有的,部分伪代码(index):
replace($$,find(keys($translation),#item == $$),values($translation)[*index*(keys($translation),#item == $$)])
我在这个问题上停留了太久,所以我希望有人能给我一些关于如何继续的想法。
任何帮助将不胜感激。
【问题讨论】:
-
你可以尝试使用这个表达式来获取索引:
mapIf(keys($translation),#item == $$,#index)[1] -
好主意。但是,我无法使表达式起作用。得到“无法评估表达式类型,更正表达式。”尝试
values($translation)[mapIf(keys($translation),#item == $$,#index)[1]]与toInteger()包裹在#index和整个mapIf没有运气。不知道它在哪里失败。将不得不返回问题。
标签: azure-synapse azure-data-flow derived-column expressionbuilder