2017-10-02 302 views
0

タイプとIDで分類され、日付列でソートされた2つの行の値の差を計算したいと思います。データテーブルの例を参照してください。 「計算済」列は現在の結果を示し、「期待値」列は達成したい結果を示します。Spotfire over関数 - 複数のカテゴリの前の日付

ID Type Date  ValueA ValueB ValueC Calculated Expected 
1 A  8/15/2017 38.11     
1 A  8/15/2017 78.10        39.99 
1 A  8/22/2017 110.24        32.14 
1 B  8/22/2017   20 
1 B  9/16/2017   10 
1 A  9/16/2017 101.13        -9.11 
2 C  8/17/2012     90 
2 A  8/18/2012 863.25    
2 B  8/18/2012   15 
2 A  8/19/2012 952.35     89.1  89.1 
2 B  8/19/2012   20 

私は、次のカスタム式を試してみましたが、唯一の指定されたIDの連続した日付がある場合のための差分値を算出しているようです。

Case 

when [Type]="A" then [Value] - Max([Value]) over (Intersect([ID],Previous([Date]))) 

else NULL 

式は、前の日は唯一のタイプ「A」に分類値の前の日であるように、OVER文の「A」と入力してフィルタリングする試みです。ただし、連続する日付でない場合(つまり前日)は、前の日付をNULLとみなしているようです。この式の結果については、上の表の「計算済み」を参照してください。

また、IntersectステートメントにTypeを追加しようとしました。 。 :交差([ID]、[タイプ]、前の([日付])が、私は同様の結果を得る

+0

値は必ずしも入力されません。期待される結果は何ですか? ? – scsimon

+0

あなたの質問に答えるために投稿を更新しました。異なるタイプの列に対応する複数の値の列を追加しました。そのため、値の列にはそれぞれの型の行のみが設定されます。達成したいと思っている結果を示すために、「Expected」という列を追加しました。 –

答えて

0

[value] - max[value] over (intersect([Type],[ID],previous([Date]))) 

あなたは

編集をしたいあなたの計算された列を与えるんこの式を使用して予想された列にほぼ一致することができましたが、最初の2行は同じ日付なので、完全一致ではありません。 formula

+0

あなたの答えに答えるために投稿を更新しました。 IntersectステートメントにTypeとIDの両方を含めても結果は変わらないようです。 –

+0

私はおおよその答えの画像を –

+0

で更新しました。私はスクリプトを試しました。私が提供したサンプルテーブルで結果を回復することができます。問題は、私の実際のテーブルが、私が提供しようとしている列に多数のNULL値を持つ異なる "データ型"と介在する "日付"をかなり多く含んでいるという事実よりはるかに複雑です。だから、スクリプトは多かれ少なかれシンプルなテーブルでは動作しますが、私の分析では実際のテーブルでは動作しません。 –