Spotfire 自定义表达式
Posted
技术标签:
【中文标题】Spotfire 自定义表达式【英文标题】:Spotfire Custom Expression 【发布时间】:2014-04-10 12:28:42 【问题描述】:在 spotfire 中需要提取特定季度的员工姓名、添加和离开的员工数量。
像我们一样
Employee_nm 季度 磨憨1 罗汉 1 索韩1 磨憨2 罗汉 2 约瑟夫 2输出:- 当我们选择 Quarter 2 时,结果应该
左添加 索汉约瑟夫【问题讨论】:
【参考方案1】:IronPython 脚本可以通过设置感兴趣的季度的属性控件来执行此操作。
用户从下拉菜单中选择数字 1-4,该下拉菜单存储在文档属性“lstQuarter”中并连接到执行计算的脚本。
计算伪代码:
访问表 用 lstQuarter - 1 中的所有名称填充 listA 用 lstQuarter 中的所有名称填充 listB 遍历比较每个名称的列表。 listA 中但 listB 中的那些已被删除,listB 中但 listA 中的那些已被添加。 将此信息写入一个字符串,输出到 Excel,无论您想要它。如果您想使用此信息更新 Spotfire 中的表,您需要先将其写入 Excel,然后用它替换数据表,但这都可以编写脚本。
【讨论】:
【参考方案2】:这个问题的解决方案只需要一个属性控件和 2 个设置到文本区域的计算值以及 2 个计算列。
首先,我扩展了数据集以显示一整年:
Employee_nm Quarter
Mohan 1
Rohan 1
Sohan 1
Mohan 2
Rohan 2
Joseph 2
Mohan 3
Joseph 3
Katelyn 3
Katelyn 4
Joseph 4
Wesley 4
接下来,计算列:
Case First([Quarter]) OVER ([Employee_nm])
when 1 then "Q1"
when 2 then "Q2"
when 3 then "Q3"
when 4 then "Q4"
end as [added]
-和-
if(Last([Quarter]) OVER ([Employee_nm])!=Max([Quarter]),
Case Last([Quarter]) OVER ([Employee_nm])
when 1 then "Q2"
when 2 then "Q3"
when 3 then "Q4"
when 4 then "Q1 Following Year"
end,"") as [left]
注意:以上内容仅适用于给定的数据集,但可以轻松扩展以适应多年。
属性控件应该这样设置:
最后是计算出来的值:
UniqueConcatenate(if([added]='$Quarter',Concatenate([Employee_nm]," added ",[added]),""))
-和-
UniqueConcatenate(if([Left]='$Quarter',Concatenate([Employee_nm]," left ",[Left]),""))
注意: 由于 'UniqueConcatenate()' 函数,上述值在许多情况下会以逗号开头。这些可以使用计算值中的文本函数来处理,并且为了可读性,该逻辑已被排除在此答案之外。
我希望这会有所帮助。
【讨论】:
【参考方案3】:您可以插入一个计算列来识别每个季度添加/删除的员工:
Concatenate(If(Find([Employee_nm],Concatenate([Employee_nm]) OVER
(Previous([Quarter])))=0,"Added in this Quarter"),If(Find([Employee_nm],
Concatenate([Employee_nm]) OVER (Next([Quarter])))=0,"Removed from Next
Quarter"))
您可以通过按季度列过滤来查看每个季度的结果。
【讨论】:
以上是关于Spotfire 自定义表达式的主要内容,如果未能解决你的问题,请参考以下文章