2016-03-17 101 views
2

*基於KSP的答案UPDATE(非常感謝你爲,它幾乎是我一直在尋找。)交叉表

有人可以幫我以下的問題。

給出的數據表:

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中,可以創建以下交叉表:

   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 

現在有件事我想在此交叉表改變,但我無法弄清楚如何:

Delta是一個只對Period1有效的列。是否可以將額外的Period和DOW級別僅應用於交叉表的某些列?

所以,我想要的是:

   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  

感謝。

+2

解決方案是否必須是純Spotfire,或者解決方案是否可以使用Terr引擎? – phiver

+0

它必須是純Spotfire。 – user6076025

回答

0

@ user6076025 - 請檢查此解決方案,並讓我知道這是否有幫助。

爲了計算的目的,我已經將X視爲1,Y視爲2,Z視爲3。

我已經在您的文章的第一個屏幕截圖中顯示了您的數據,然後從未轉義的數據創建了一個交叉表。

附上截圖供您參考。

unpivot data

Cross table from unpivoted data

0

@ user6076025 - 我已經在你的表賦值爲「虛擬價值」列計算的目的,並添加計算列「新三角」,這將平均D1,D2和D3 ,D4。

這裏是下式: calculated column formula

現在,我已經從這個數據創建的交叉表。以下是桌子和十字桌的截圖。

new solution 請讓我知道這是否有幫助。

0

關於道瓊斯指數的問題,我會放置在固定值的選項的文本區域下拉列表

顯示名稱:「包括Dow2」值:0 顯示名稱:「排除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過濾器。