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

Collect exp. Function with distinct Values in Mapping Data Flow ADF Aggregate Transformation

我想使用 collect(column1) 函数收集 Agg 中 column2 组的所有行值。转型。但是由于该 column1 具有重复值,因此我在返回的数组中得到了重复项。我想要一个收集所有不同值的函数。

没有 collectDistinct() 函数,因此您无法通过数据流中的函数实现此功能。

你可以试试这个: 创建两个聚合转换。

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

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

希望对您有所帮助。

这已经得到解答,但是有更简单的方法可以在像这样的聚合情况下收集唯一值,而不需要另一个分组依据。在我们的场景中,我们有如下数据

| ORDER_NO |品牌 |

| ------ | -------------- |

| ORD001 |示例品牌 1 |

| ORD001 |示例品牌 1 |

| ORD001 | ExampleBrand2 |

我们希望每个 ORDER_NO 将其排成一行,并列出独特的品牌。示例输出如下

| ORDER_NO |品牌 |

| ------ | -------------- |

| ORD001 |示例品牌 1、示例品牌 2 |

所以我们确实在 ORDER_NO 上添加了聚合转换(分组依据),并使用 collect(BRAND) 将所有 BRAND 值收集到名为 BRANDS_ARR.

的数组中

在此之后,我们添加了一个 Derived Column 转换,并将 BRAND 字符串数组转换为唯一字符串 BRANDS,如下所示

栏目名称:品牌

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

请注意,我们将 reduce 函数与 iif 和 instr 函数一起使用来决定是否应累加下一个值。这样重复项就会被过滤掉,你会得到类似“集合”的功能。

尼特:上面的代码片段最后有一个额外的逗号,可以使用替换功能轻松删除。