首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >收集exp映射数据流ADF聚合转换中具有不同值的函数

收集exp映射数据流ADF聚合转换中具有不同值的函数
EN

Stack Overflow用户
提问于 2020-07-17 11:43:52
回答 2查看 459关注 0票数 0

我想使用collect(column1)函数来收集Agg中一个group By column2的所有行值。转型。但是因为该column1有重复的值,所以我在返回的数组中有重复的值。我想要一个能收集所有不同值的函数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-07-17 17:28:57

这里没有collectDistinct()函数,所以你不能通过数据流中的by函数来实现。

您可以尝试这样做:创建两个聚合转换。

首先,按基本型号和表达式分组,然后添加一个列(DModelDocId),表达式为first(modelDocId)

其次,按基本型号分组,然后添加一个列(ModelDocIds),表达式为collect(DModelDocId)

希望这能对你有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2021-01-20 04:00:14

这个问题已经得到了回答,但有一种更容易的方法来收集像这样的聚合情况下的唯一值,而不需要另一个group by。在我们的场景中,我们有如下数据

ORDER_NO |品牌

-|

ORD001 | ExampleBrand1

ORD001 | ExampleBrand1

ORD001 | ExampleBrand2

我们想让它在每个ORDER_NO上占一行,并列出唯一的品牌。输出示例如下

ORDER_NO |品牌

-|

ORD001 | ExampleBrand1,ExampleBrand2

因此,我们在品牌上添加了一个聚合转换(group by),并使用collect ( ORDER_NO )收集名为BRANDS_ARR的数组中的所有品牌值。

之后,我们添加了一个派生列转换,并将品牌字符串数组转换为唯一的字符串品牌,如下所示

列名: BRANDS

表达式:toString(reduce(BRANDS_ARR, '', iif((instr(#acc, #item) > 0), #acc, #acc + #item + ',') , #result))

请注意,我们使用带有iif和instr函数的reduce函数来决定是否应该累加下一个值。这样,重复项就会被过滤掉,你就会得到一个类似于"Set“的功能。

Nit:上面的代码片段在最后得到了一个额外的逗号,使用replace函数可以很容易地去掉这个逗号。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62946748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档