Dataweave:获取com.mulesoft.weave.model.structure.QualifiedName而不是字符串

Dataweave:获取com.mulesoft.weave.model.structure.QualifiedName而不是字符串,mule,dataweave,Mule,Dataweave,我有一个数据库查询,返回如下数据: "LABEL","CONTAINER_ID","STATUS" "14.JW24","1006063116","F" "14.JW25","1006063116","F" "1.JW2M","9999997","R" "8.282","9999999","R" "4.135","9999999","F" "6.43","9999999","F" "11.12","9999999","R" "14.JW12","1006063073","R" "14.JW13"

我有一个数据库查询,返回如下数据:

"LABEL","CONTAINER_ID","STATUS"
"14.JW24","1006063116","F"
"14.JW25","1006063116","F"
"1.JW2M","9999997","R"
"8.282","9999999","R"
"4.135","9999999","F"
"6.43","9999999","F"
"11.12","9999999","R"
"14.JW12","1006063073","R"
"14.JW13","1006063073","R"
"14.JW10","1006063068","F"
%dw 1.0
%output application/java
---
payload filter $.STATUS == "F" groupBy $.CONTAINER_ID pluck $$ as :string
我正在使用Dataweave创建一个状态为“F”的不同容器id值的列表。比如:

["1006063116", "9999999", "1006063068"]
以下是我的dataweave脚本:

%dw 1.0
%output application/java
---
payload filter $.STATUS == "F" groupBy $.CONTAINER_ID pluck $$
这很好,只是我得到了com.mulesoft.weave.model.structure.QualifiedName对象列表,而不是字符串列表


如何修改dataweave脚本以获取字符串,或者如何从QualifiedName对象获取字符串值?我已尝试对对象调用toString()和getName()。前者不提供我需要的值,后者不起作用。

只需将结果元素转换为如下字符串:

"LABEL","CONTAINER_ID","STATUS"
"14.JW24","1006063116","F"
"14.JW25","1006063116","F"
"1.JW2M","9999997","R"
"8.282","9999999","R"
"4.135","9999999","F"
"6.43","9999999","F"
"11.12","9999999","R"
"14.JW12","1006063073","R"
"14.JW13","1006063073","R"
"14.JW10","1006063068","F"
%dw 1.0
%output application/java
---
payload filter $.STATUS == "F" groupBy $.CONTAINER_ID pluck $$ as :string
重要的部分是
as:string

替代解决方案:您可以使用
distinctBy
关键字获得类似的结果,并摆脱groupBy+pulk:

%dw 1.0
%output application/java
---
(payload filter $.status == "F").container_id distinctBy $

只需将结果元素强制转换为字符串,如下所示:

"LABEL","CONTAINER_ID","STATUS"
"14.JW24","1006063116","F"
"14.JW25","1006063116","F"
"1.JW2M","9999997","R"
"8.282","9999999","R"
"4.135","9999999","F"
"6.43","9999999","F"
"11.12","9999999","R"
"14.JW12","1006063073","R"
"14.JW13","1006063073","R"
"14.JW10","1006063068","F"
%dw 1.0
%output application/java
---
payload filter $.STATUS == "F" groupBy $.CONTAINER_ID pluck $$ as :string
重要的部分是
as:string

替代解决方案:您可以使用
distinctBy
关键字获得类似的结果,并摆脱groupBy+pulk:

%dw 1.0
%output application/java
---
(payload filter $.status == "F").container_id distinctBy $

谢谢我曾想过添加as:string,但出于某种原因,我认为需要先将表达式包装在parens中,这导致语法无效。谢谢!我曾想过添加as:string,但出于某种原因,我认为需要首先将表达式包装在parens中,这导致语法无效。