【问题标题】:Spotfire Custom ExpressionSpotfire 自定义表达式
【发布时间】:2014-04-10 12:28:42
【问题描述】:

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

像我们一样

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

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

左添加 索汉约瑟夫

【问题讨论】:

    标签: spotfire


    【解决方案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"))
        

        您可以通过按季度列过滤来查看每个季度的结果。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多