Qlikview GetFieldSelections 多项选择

Qlikview GetFieldSelections Multiple Selection

我有一个列表框,它从 listbox.

中选择不同的值(三个之一)

然后过滤图表,我在其中显示基于总和的条形图。

目前,当从 listbox 中选择一个值时它可以工作,我要求图表处理多个选择(即三分之二或三分之三),但是使用的语法不起作用。

这是我在图表属性中用于选择的行,表达式

Sum ( {< Bank_Division = {'$(=GetFieldSelections(BU))'} >} Amt_Requested)

我猜它与 GetFieldSelections 方法有关,但是到目前为止所有答案似乎都建议使用连接作为替代,我看不出这将如何解决我的要求。

感谢您的帮助

做你想做的你应该使用这个表达式

=chr(39)&concat(distinct FieldB,chr(39)&','&chr(39))&chr(39)

然后你的集合分析看起来像这样

Sum ( {< Bank_Division = {'$(=concat(distinct BU,chr(39)&','&chr(39)))'}>} >} Amt_Requested)

如前所述,带有“$(=GetFieldSelections(BU))”的 getfieldselections() 函数 returns 值将导致集分析无法使用的 'value1,value2'。它需要一个逗号分隔的列表,每个值都用单引号引起来,而不是定义列表的结尾。

concat 函数将产生 'value1'、'value2'。 chr(39) 只是一个技巧,用于将引号插入到表达式的输出中,而不是让它们充当表达式定义的一部分。 distinct 是必要的,因为 concat() returns 每个可能的值,除非你告诉它只带唯一值。

使用 concat() 而不是 getfieldselections() 的另一个原因是,当没有选择任何内容时,getfieldselections 将返回为未定义,concat returns 始终可能值的列表,尊重其他选择可能会限制该列表。所以它的行为真的很像本地 QlikView 引擎。

最后一句话就是为什么您应该仔细考虑您是否需要在您的表达式中使用它,或者您是否可以让 QlikView 做它作为开销的事情,特别是如果您需要区分一个长列表可能非常高无论如何,该程序都是为自己做的事情而构建的。

我唯一一次这样做是因为使用 if() 由于复杂的数据模型而导致数据完整性问题,即便如此,在我返回修复基础数据之前,它确实是一个快速修复。