2017-08-20 39 views
1

我無法理解Spotfire是否允許在包含數據數據組的重複數據數據的任意行之間進行條件計算。我無法找到任何東西來提示我找到正確的解決方案。基於條件的Spotfire計算列與行比率

上下文(簡化):我有一個來自傳感器報告進程狀態的數據,這個數據被分組到代表每個測量需要幾分鐘的測量的突發/組中。 在每個脈衝串內,傳感器正在測量信號,如果檢測到預定義的特徵(信號形狀),則傳感器輸出一些計算值,V量化該特徵並報告發生這種情況的RunTime。

因此,本質上我有三列:突發數量,突發內的一組RT和與這些RT相關的值。 我需要添加一個計算列來做RT值等於特定數字的行的比例,比如1.89和2.76。

example of data table

高電平邏輯爲:

如果值存在於1.89運行時間和一個值在2.76運行時存在,則計算這些值的比率。對每個突發重複。 我知道我可以重複使用OVER運算符組的計算,但我正在努力與每個組內的邏輯... 任何提示,將不勝感激。 非常感謝!

回答

0

您需要在這裏執行的第一件事是對您的數據集應用一個命令。我假設樣本數據是完整的,你的真實數據涵蓋的情況下,因此,我們創建了一個計算列:

RowID() as [ROWID] 

一旦做到這一點,我們可以創建一個計算列,將計算你比在它的各組。請注意,與其他組相比,您的B4示例不正確。也就是說,你的分子和分母相反。

If(([RT]=1.89) or ([RT]=2.76),[Value]/Max([Value]) OVER (Intersect([Burst],Previous([ROWID])))) 

打破這種下來...

  • If(([RT]=1.89) or ([RT]=2.76),限制行於那些在RT = 1.89 or 2.76
  • 接下來是評價如果上述條件TRUE
  • [Value]/Max([Value]) OVER (Intersect([Burst],Previous([ROWID]))))此取值爲行和由Max([Value])超過[Burst]AllPrevious([ROWID])分組劃分它。這由Intersect()函數指出。因此,分母將始終爲之前的值。請注意,Max()是一個簡單的聚合使用,但任何應該爲這種情況下,因爲我們只期望一個單一的值。所有Over()函數都要求並聚合,以將結果集限制爲單行。

結果

Results

+0

輝煌!非常感謝scsimon! 我對Spotifre相當陌生,我仍然在表達式中的節點導航上苦苦掙扎。我知道IF語句會限制數據,但並不完全意識到可以使用Previous之類的方法在其中創建節點,並且需要使用Intersect進行轉義。 非常感謝。 – MaxSense

+0

不用擔心所有的伴侶 – scsimon