1

在 spotfire 中需要提取特定季度的员工姓名,添加和离开的员工数量。

就像我们一样

Employee_nm 季度
磨憨1
罗汉 1
索韩1
磨憨2
罗汉 2
约瑟夫 2

输出:- 当我们选择 Quarter 2 时,结果应该

左添加
索汉约瑟夫
4

3 回答 3

1

IronPython 脚本可以通过设置感兴趣的季度的属性控件来执行此操作。

用户从下拉菜单中选择数字 1-4,该下拉菜单存储在文档属性“lstQuarter”中并连接到执行计算的脚本。

计算伪代码:

访问表
用 lstQuarter - 1 中的所有名称填充 listA
用 lstQuarter 中的所有名称填充 listB
遍历比较每个名称的列表。listA 中但 listB 中的那些已被删除,listB 中但 listA 中的那些已被添加。
将此信息写入一个字符串,输出到 Excel,无论您想要它。

如果您想使用此信息更新 Spotfire 中的表,您需要先将其写入 Excel,然后用它替换数据表,但这都可以编写脚本。

于 2014-05-14T17:05:13.487 回答
1

您可以插入一个计算列来识别每个季度添加/删除的员工:

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"))

您可以通过在季度列上进行过滤来查看每个季度的结果。

于 2016-08-30T21:20:06.650 回答
1

这个问题有一个解决方案,只需要一个属性控件和 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()' 函数,上述值在许多情况下会显示前导逗号。这些可以使用计算值中的文本函数来处理,并且为了可读性,该逻辑已被排除在此答案之外。

我希望这有帮助。

于 2015-09-14T14:12:13.990 回答