在 Spotfire 自定义表达式中添加多列

问题描述 投票:0回答:2

我正在尝试创建一个按钮来更改条形图,以便在 y 轴上的 2 列(并排条形)和 1 列之间切换。 切换的第一个选项: 切换的第二个选项: 我使用的按钮每次单击时都会将文档属性增加 1,并且使用 y 轴的自定义表达式来检查文档属性的值并相应地更改轴。 自定义表达式是一个 if 语句,检查它是奇数还是偶数,然后更改列。 (旁注 - 我还没有尝试使用 Iron Python 脚本解决这个问题)

我试过了

If( ${DocProp} % 2 = 0, (UniqueCount([moa]) , UniqueCount([jp_cluster])),(UniqueCount([moa])))

但收到错误:

Expected ')' but found ',' on line 1 character 37.

我知道两列之间的逗号可能会干扰 if 语句而导致问题,所以我尝试了 case 语句:

case ${RemoveJPCluster} % 2 when 0 then (UniqueCount([moa]), UniqueCount([jp_cluster])) else UniqueCount([moa]) end

但这会引发同样的错误:

Expected ')' but found ',' on line 1 character 44.

我也尝试过: + 和 巢

对此有什么帮助吗?有可能吗?我不知道为什么我不能用括号将两列括起来并收工...

spotfire
2个回答
1
投票

我发现的唯一方法是制作一个ironpython脚本

from Spotfire.Dxp.Application.Visuals import *
Document.Properties["DocProp"] += 1
myVis = myVis.As[Visualization]()
if Document.Properties["DocProp"] % 2 == 0:
    myVis.YAxis.Expression = "UniqueCount([moa])"
else:
    myVis.YAxis.Expression =  '$map("UniqueCount($csearch([table_name],"mcbcce*"))",",")'

它附加到一个按钮,并在 DocProp 更改时更改列。

解决的问题在第7行:

我创建了 2 个计算列,它只是使用此前缀重命名了列:“mcbcce”。

然后我使用 csearch 选择这些列,将它们输出为两个单独的列。

最后我使用“map”将 UniqueCount 聚合分配给它们两个。


0
投票

我不确定为什么这不起作用,可能是因为您怀疑逗号妨碍了。

不要创建值为 1 或 2 的 DocProp, 您可以直接将所需的表达式放入其中。 因此,您添加一个文本区域,其中包含分配给 DocProp 的下拉列表。

通过:固定值设置属性值,然后将两个条目分配为:

显示名称:1(或任何你想要的)

值:UniqueCount([moa])

显示名称:2

值:UniqueCount([moa]),UniqueCount([jp_cluster])

然后直接用 ${DocProp} 填充您的值轴。

© www.soinside.com 2019 - 2024. All rights reserved.