【发布时间】:2021-04-14 07:12:45
【问题描述】:
我的表达式中有解码功能,我将这个解码转换为qliksense表达式..看起来qliksense默认没有解码关键字
那么我如何在 qliksense 中转换这个解码
SUM(DECODE(Rcount,0,DECODE(H.documentno,NULL,(C.gross- C.amont),0),0))
请帮忙
【问题讨论】:
-
请帮忙看看
我的表达式中有解码功能,我将这个解码转换为qliksense表达式..看起来qliksense默认没有解码关键字
那么我如何在 qliksense 中转换这个解码
SUM(DECODE(Rcount,0,DECODE(H.documentno,NULL,(C.gross- C.amont),0),0))
请帮忙
【问题讨论】:
Qlik 中Decode 的等效项是if .. then .. else 语句。
您的语句可以转换为:
SUM(
if( Rcount = 0,
if( isNull(H.documentno), C.gross - C.amont, 0)
,0)
)
如果我们从内部Decode开始
DECODE(H.documentno,NULL,(C.gross- C.amont),0)
它可以“翻译”成:如果H.documentno是Null,则返回C.gross- C.amont,否则返回0
而外层Decode可以翻译成:如果Rcount是0则返回内层Decode语句否则返回0
一点警告/建议。通常if .. then .. else 语句在表达式中可能会很慢(呃)。您可能看不到小数据集的差异,但在大/大数据集中它是可见的。如果你可以在加载脚本和前端移动这个计算,只需Sum() 结果,那么前端计算会更快
【讨论】:
SUM( if(RLCOUNT = 0, if(isNull(DOCUMENTNO),0,(GROSS- AMOUNT)), (GROSS - AMOUNT)) )