【发布时间】:2016-05-12 16:21:32
【问题描述】:
请考虑以下 CSV 格式的输入样本
Company,FirstName,LastName,Email
Rate,Manule,Reaya,Reaya@egetmetus.org
Rate,sholy,Bonvgy,Bonvage@mollis.org
输出应该如下:
Company,FirstName,LastName,Email
Rate,Manule,Reaya,Reaya@egetmetus.org
,sholy,Bonvgy,Bonvage@mollis.org
条件是:如果公司名称在输入中的不同记录中重复,则在输出 CSV 中应该为空。
请让我知道这是否可以在 Mule 的 Dataweave 组件中处理
下面是更新代码
<?xml version="1.0" encoding="UTF-8"?>
<mule xmlns:file="http://www.mulesoft.org/schema/mule/file" xmlns:dw="http://www.mulesoft.org/schema/mule/ee/dw" xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation"
xmlns:spring="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd
http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd
http://www.mulesoft.org/schema/mule/file http://www.mulesoft.org/schema/mule/file/current/mule-file.xsd
http://www.mulesoft.org/schema/mule/ee/dw http://www.mulesoft.org/schema/mule/ee/dw/current/dw.xsd">
<configuration doc:name="Configuration">
<expression-language>
<global-functions>
def getCompanyName(Company){
if (flowVars.companyList contains Company) {
return "";
} else {
flowVars.companyList.add(Company);
return Company;
}
}
</global-functions>
</expression-language>
</configuration>
<file:connector name="File" autoDelete="true" streaming="true" validateConnections="true" doc:name="File"/>
<file:connector name="File1" autoDelete="true" outputAppend="true" streaming="true" validateConnections="true" doc:name="File"/>
<flow name="csvtocsvrecordemptyFlow">
<file:inbound-endpoint path="src\test\resources\input" connector-ref="File" responseTimeout="10000" doc:name="File"/>
<set-variable variableName="companyList" value="[[]]" doc:name="Variable"/>
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/csv header=true
---
payload map {
CompanyName: getCompanyName($.Company),
name:$.FirstName
}]]></dw:set-payload>
</dw:transform-message>
<file:outbound-endpoint path="src\test\resources\output" outputPattern="test.csv" connector-ref="File1" responseTimeout="10000" doc:name="File"/>
</flow>
</mule>
【问题讨论】:
标签: csv mule-studio dataweave