请考虑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 的数据编织组件中处理
下面是更新的代码
<?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>
@Akil Karthik:当我尝试解决方案时,它仍然显示强制二进制到数组错误。我已经在变量声明中提供了MIME类型application/csv。
然而,问题是将使用的公司名称存储在内存中,仅使用DataWeave。我认为这是做不到的。但是如果你结合MEL Global函数和DataWeave,你应该能够实现这一点。
在mule配置中添加一个全局MEL函数,如下所示
<configuration doc:name="Configuration">
<expression-language>
<global-functions>
def getCompanyName(name){
if (flowVars.companyList contains name) {
return "";
} else {
flowVars.companyList.add(name);
return name;
}
}
</global-functions>
</expression-language>
</configuration>
在流程中,在数据编织之前初始化一个空数组。
<set-variable value="#[[]]" variableName="companyList" doc:name="Variable" />
然后,在dataweave中,使用MEL函数-
...
companyName: getCompanyName($.name)
...
您可以在 MEL 函数中编写任何自定义逻辑,这些逻辑可以计算名称并向 DataWeave 返回一些值。
问题内容: 我有一个这样的表: 我正在尝试删除具有3个以上具有相同ID的名称的记录,但要删除所有记录。因此,我试图得到这样的东西: 我不了解如何编写此查询。我已经达到了保留一个记录但没有记录阈值的程度: 给我: 有什么建议?哦,对了,我不在乎合并时会保留哪些记录。 问题答案: 您可以使用CTE做到这一点
问题内容: ls命令以以下格式打印时间: 我如何转换,从接收到的时间的这个格式的本地时间? 问题答案: 使用strftime(您需要先转换为): 格式: 这是完整的代码:
问题内容: 在我的数据库中,我有两个表,一个是政治(politics_id,policy,policy_type_id),另一个是tipo_politics(politics_type_id,policy_type)。 这是餐桌 政治 这是表 tipo_politics 我需要的是在视图中显示以政治类型为标题的政治表格的记录,但是标题不会重复。这样的事情。 我希望通过group by进行查询,但只
问题内容: 我正在编写一个小的AngularJS应用,该应用具有登录视图和主视图,其配置如下: 我的LoginController检查用户/密码组合,并在$ rootScope上设置一个属性,以反映此情况: 一切正常,但是如果我访问,最终将绕过登录屏幕。我想写一些类似的内容,“每当路由更改时,如果$ rootScope.loggedUser为null,则重定向到/ login” … …等等。我可以
我有一个csv,我需要能够打印记录的总数,这是如何做到的?我尝试使用总和语句和计数,但似乎没有工作
问题内容: 这是我对源数据的插入语句。 我有我的源数据 该数据已经排序,和。 我正在尝试从中生成此输出: 这是从原始数据得出结果的逻辑: 对于带有,或的每个记录 A* :如果以下记录 B 具有,则: * 如果记录 乙 具有相同的日期部分如 甲 (忽略时间),同时消除记录 甲 和 乙 从结果。这就是为什么删除记录4、5、8和9的原因; 否则,如果记录 B 的值早于记录 A ,则将 A 的值更新为 B