收集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 函数一起使用来决定是否应累加下一个值。这样重复项就会被过滤掉,你会得到类似“集合”的功能。
尼特:上面的代码片段最后有一个额外的逗号,可以使用替换功能轻松删除。
我想使用 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 函数一起使用来决定是否应累加下一个值。这样重复项就会被过滤掉,你会得到类似“集合”的功能。
尼特:上面的代码片段最后有一个额外的逗号,可以使用替换功能轻松删除。