在 Spotfire 中交叉 table

Cross table in Spotfire

*根据 ksp 的回答更新(非常感谢,这几乎是我要找的。)

谁能帮我解决以下问题。

给定数据table:

Key     Rec     Period  DOW    Category Value 
Key1    Rec1    Period1 dow1   KPIa     x1    
Key1    Rec2    Period1 dow1   KPIb     z1
Key1    Rec3    Period2 dow1   KPIa     y1  
Key2    Rec4    Period1 dow1   KPIa     x1      
Key2    Rec5    Period1 dow1   KPIb     z1
Key2    Rec6    Period2 dow1   KPIa     y1  
Key1    Rec7    Period1 dow2   KPIa     x2      
Key1    Rec8    Period1 dow2   KPIb     z2
Key1    Rec9    Period2 dow2   KPIa     y2  
Key2    Rec10   Period1 dow2   KPIa     x2      
Key2    Rec11   Period1 dow2   KPIb     z2
Key2    Rec12   Period2 dow2   KPIa     y2
Key1    Rec13   Period1 dow1   Delta    d1
Key1    Rec14   Period1 dow2   Delta    d2
Key2    Rec15   Period1 dow1   Delta    d3
Key2    Rec16   Period1 dow2   Delta    d4

在 Spotfire 中,可以创建以下交叉 table:

              Avg(KPIa)          Avg(KPIb)      Delta 
        Period1     Period2      Period1       Period1                 
       dow1 dow2   dow1 dow2    dow1 dow2     dow1  dow2       
Key1    x1   x2     y1   y2      z1   z2      d1    d2
Key2    x1          y1   y2      z1   z2      d3    d4

现在我想在这个十字架上改变一些东西 table 但我无法弄清楚如何:

Delta 是一个只对 Period1 有效的列。是否可以将额外的 Period 和 DOW 水平仅应用于交叉的某些列 table?

所以我想要的是:

              Avg(KPIa)          Avg(KPIb)       Delta 
        Period1     Period2      Period1         
       dow1 dow2   dow1 dow2    dow1 dow2    
Key1    x1   x2     y1   y2      z1   z2      (d1 + d2) / 2 
Key2    x1          y1   y2      z1   z2      (d3 + d4) / 2 

而当 dow2 被过滤掉时:

              Avg(KPIa)         Avg(KPIb)        Delta 
        Period1     Period2      Period1         
         dow1        dow1         dow1     
Key1      x1          y1           z1             d1
Key2      x1          y1           z1             d3    

提前致谢。

@ user6076025 - 请检查此解决方案,如果有帮助请告诉我。

出于计算目的,我将 X 视为 1,将 Y 视为 2,将 Z 视为 3。

我已经对你的第一个屏幕截图中的数据进行了逆透视,然后从逆透视的数据中创建了一个十字table。

附上截图供大家参考。

@ user6076025 - 我已将值分配给 table 中的 'dummy value' 列用于计算目的,并添加了一个计算列 'new delta',它将平均 d1、d2 和 d3、d4。

公式如下:

现在,我根据这些数据创建了一个交叉 table。下面是table和交叉table.

的截图

如果这有帮助,请告诉我。

关于道指问题,我会在带有固定值选项的文本区域中放置一个下拉列表

显示名称:'Include Dow2' 值:0 显示名称:'Exclude Dow2' 值:1

这将有一个用于更改的脚本,该脚本将执行以下操作:

if Document.Properties["udDowChoice"] == '0':
    Document.Properties["PivotString"] = '<[Category] NEST [Period] NEST [DOW]>'
else:
    Document.Properties["PivotString"] = '<[Category] NEST [Period]>'

然后在水平轴的自定义表达式中,使其等于 ${PivotString}

并使用表达式限制数据

If(${udDow} = 0, 1=1, [DOW] <> 'dow2')

为了避免用户的潜在混淆,我还建议从过滤方案中隐藏 DOW 过滤器。