2017-04-07 60 views
1

我想創建一個計算列來顯示按[案例ID],[階段]和[動作]分組的時間動作結束。舞臺的順序不是必須的字母,它可以重複。 [臺] 'C' 後說,我們可以有另一個[臺] 'C' 在將來spotfire-如何找到創建一列來計算下一個階段的時間

感謝,

enter image description here

+0

等什麼將決定下一次?數據是否在導入之前排序,因此應用自定義排序是不必要的?這些數據類型是真正的字符嗎? – scsimon

+1

感謝您的回覆! 1)下一次只是下一階段的時間。例如,下一次時間a是時間b beacuse階段B在階段A之後。2)如果您可以提供按時間排序數據的方法,那將是非常好的。 3)數據類型是'日期和時間',字符只是簡化符號。 –

+0

謝謝@BenWang。你能提供一個更現實/實際的數據樣本嗎?數據類型在這種情況下非常重要,因此用於此測試數據的方法不適用於您的真實數據。乾杯。 – scsimon

回答

1

感謝更新的測試數據。數據類型爲極端詢問時很重要。另外,測試數據應儘可能接近實際數據,否則解決方案通常不會縮放。例如,在測試數據中,這些值只是時間。按時排序並不考慮當天的情況,因此它的處理都是平等的。由於這些值實際上是DateTime,因此我已將其添加到測試數據中。這些表達式會爲您提供您問題中確定的預期結果。

  1. Rank([Time_Action_Begin],"asc",[Case ID]) as [Rank]
  2. Min([Time_Action_Begin]) OVER (Intersect([Case ID],Next([Rank])))

成績

+---------+-------+----------+------------------------+------------------------+------+ 
| Case ID | Stage | Action | Time_Action_Begin | Time_Action_End  | Rank | 
+---------+-------+----------+------------------------+------------------------+------+ 
|  1 | A  | approve | 01/01/2016 11:30:00 PM | 01/02/2016 12:30:00 AM | 1 | 
|  1 | A  | approve | 01/01/2016 11:30:00 PM | 01/02/2016 12:30:00 AM | 1 | 
|  1 | B  | approve | 01/02/2016 12:30:00 AM | 01/02/2016 1:30:00 AM | 3 | 
|  1 | B  | approve | 01/02/2016 12:30:00 AM | 01/02/2016 1:30:00 AM | 3 | 
|  1 | C  | approve | 01/02/2016 1:30:00 AM | 01/02/2016 2:30:00 AM | 5 | 
|  1 | C  | approve | 01/02/2016 1:30:00 AM | 01/02/2016 2:30:00 AM | 5 | 
|  1 | D  | approve | 01/02/2016 2:30:00 AM | 01/02/2016 3:30:00 AM | 7 | 
|  1 | D  | approve | 01/02/2016 2:30:00 AM | 01/02/2016 3:30:00 AM | 7 | 
|  1 | E  | approve | 01/02/2016 3:30:00 AM | 01/02/2016 4:30:00 AM | 9 | 
|  1 | E  | approve | 01/02/2016 3:30:00 AM | 01/02/2016 4:30:00 AM | 9 | 
|  1 | F  | complete | 01/02/2016 4:30:00 AM | 01/02/2016 5:30:00 AM | 11 | 
|  1 | F  | complete | 01/02/2016 4:30:00 AM | 01/02/2016 5:30:00 AM | 11 | 
|  1 | C  | approve | 01/02/2016 5:30:00 AM |      | 13 | 
|  1 | C  | approve | 01/02/2016 5:30:00 AM |      | 13 | 
|  2 | A  | approve | 01/01/2016 10:30:00 PM | 01/02/2016 12:30:00 AM | 1 | 
|  2 | A  | approve | 01/01/2016 10:30:00 PM | 01/02/2016 12:30:00 AM | 1 | 
|  2 | B  | approve | 01/02/2016 12:30:00 AM | 01/02/2016 2:30:00 AM | 3 | 
|  2 | B  | approve | 01/02/2016 12:30:00 AM | 01/02/2016 2:30:00 AM | 3 | 
|  2 | C  | approve | 01/02/2016 2:30:00 AM | 01/02/2016 3:30:00 AM | 5 | 
|  2 | C  | approve | 01/02/2016 2:30:00 AM | 01/02/2016 3:30:00 AM | 5 | 
|  2 | D  | approve | 01/02/2016 3:30:00 AM | 01/02/2016 4:30:00 AM | 7 | 
|  2 | D  | approve | 01/02/2016 3:30:00 AM | 01/02/2016 4:30:00 AM | 7 | 
|  2 | E  | approve | 01/02/2016 4:30:00 AM | 01/02/2016 5:30:00 AM | 9 | 
|  2 | E  | approve | 01/02/2016 4:30:00 AM | 01/02/2016 5:30:00 AM | 9 | 
|  2 | F  | complete | 01/02/2016 5:30:00 AM | 01/02/2016 6:30:00 AM | 11 | 
|  2 | F  | complete | 01/02/2016 5:30:00 AM | 01/02/2016 6:30:00 AM | 11 | 
|  2 | C  | approve | 01/02/2016 6:30:00 AM |      | 13 | 
|  2 | C  | approve | 01/02/2016 6:30:00 AM |      | 13 | 
+---------+-------+----------+------------------------+------------------------+------+ 
+0

有無論如何都要考慮[病例ID]?我希望每個案例ID都能指定表達式。我試過Min([Time_Action_Begin])OVER相交(NextPeriod([Time_Action_Begin]),[case id])。然而,它並沒有給我我想要的東西。 –

+0

@ BenWang這就是爲什麼提供足夠的測試數據和預期結果非常重要。查看更新的答案。 – scsimon

+1

謝謝你的回答。我將在未來的發佈中記住這一點。你能否介紹一下你使用的next()方法? –

相關問題