【发布时间】:2018-12-07 18:40:14
【问题描述】:
我们正在尝试将 tableau Reporting/BI 工具的 IF-THEN-ELSE 语句转为 TERNARY OPERATOR Java Based Talend tool 或 JAVA based IF-THEN-ELSE
输入数据
if isnull([Ship Date (Calculated)]) then
(if (attr(trim([Corp Acct Name])) = 'ABC'
or attr(trim([Corp Acct Name])) ='BCD'
or attr(trim([Corp Acct Name])) ='CDE')
then
(if DATEPART('weekday',ATTR([ ShipDate])) =1 then (attr([ ShipDate])-3)
elseif DATEPART('weekday',ATTR([ ShipDate])) =2 then (attr([ ShipDate])-3)
else (attr([ShipDate])-2) END
) else (if DATEPART('weekday',ATTR([ ShipDate])) =1 then (attr([ ShipDate])-2)
else (attr([ ShipDate])-1) END
) end)
ELSE
(if (attr(trim([Corp Acct Name])) = 'ABC'
or attr(trim([Corp Acct Name])) ='BCD'
or attr(trim([Corp Acct Name])) ='CDE')
then
(if DATEPART('weekday',[Ship Date (Calculated)])=1 then ([Ship Date (Calculated)]-3)
elseif DATEPART('weekday',[Ship Date (Calculated)])=2 then ([Ship Date (Calculated)]-3)
else ([Ship Date (Calculated)]-2) end)
else (if DATEPART('weekday',[Ship Date (Calculated)])=1 then ([Ship Date (Calculated)]-2)
else ([Ship Date (Calculated)]-1) end) end)
END
此处使用的字段及其数据类型
[Ship Date (Calculated)]- date
[Corp Acct Name] -String
[ ShipDate] - Date
我们试过了:
row1.ShipDateCalculated==null?("ABC".equalsIgnoreCase(row1.CorpAcctName) || "BCD".equalsIgnoreCase(row1.CorpAcctName
||"CDE".equalsIgnoreCase(row1.CorpAcctName))?(TalendDate.getPartOfDate("DAY_OF_WEEK",row1.ShipDate) ==1?TalendDate.addDate(TalendDate.formatDate("MM/dd/yyyy", row1.ShipDate ),"MM/dd/yyyy",-3,"dd"):
(TalendDate.getPartOfDate("DAY_OF_WEEK",row1.ShipDate) ==2?TalendDate.addDate(TalendDate.formatDate("MM/dd/yyyy", row1.ShipDate ),"MM/dd/yyyy",-3,"dd"):TalendDate.addDate(TalendDate.formatDate("MM/dd/yyyy", row1.ShipDate ),"MM/dd/yyyy",-2,"dd")
:(TalendDate.getPartOfDate("DAY_OF_WEEK",row1.ShipDate) ==1?TalendDate.addDate(TalendDate.formatDate("MM/dd/yyyy", row1.ShipDate ),"MM/dd/yyyy",-2,"dd"):TalendDate.addDate(TalendDate.formatDate("MM/dd/yyyy", row1.ShipDate ),"MM/dd/yyyy",-1,"dd"):""))
输出数据:
寻找基于JAVA的三元运算符。
condition1?(condition2?value if true:value if false): (condition3?value if true:value if false)
更多错误:在当前 tmap 语法上添加 else 部分后。出现错误
【问题讨论】:
-
您应该将代码转换为 Java 并将其放入 tJavaRow 组件中以处理数据。或者,您可以重新创建使用 Talend 组件和 Talend 检查创建的所有代码。这可能会变得更简洁一些,但最终会有更多组件。
-
我正在尝试捕获到 tmap ternery 运算符表达式
-
请向我们展示您现在尝试过的内容,我们可以从这里开始使其发挥作用。
-
@Corentin 更新问题中的已尝试部分。请看一下。
标签: java if-statement tableau-api talend