2017-08-20 3 views
1

Spotfireがデータグループ上で繰り返される数値データを含む任意の行の間の条件付き計算を可能にするかどうかはわかりません。私は正しい解決策に私をキューに入れる何かを見つけることができませんでした。条件に基づいた行比率のSpotfire-計算カラム

コンテキスト(簡略化):センサーのデータがプロセスの状態を報告しており、このデータは測定を表すバースト/グループに数分ずつグループ化されています。 各バースト内でセンサは信号を測定しており、事前定義されたフィーチャ(信号形状)が検出された場合、センサはこのフィーチャを定量化し、これが発生したランタイムをレポートする計算値を出力します。

本質的に私は3つの列を持っています:バースト番号、このバースト内の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]))))である場合、これは行の値をとり、[Burst]AllPrevious([ROWID])のグルーピング上Max([Value])で除算評価来ます。これは、Intersect()関数によって示されます。したがって、分母は常にの前のの値になります。 Max()は単純な集計であることに注意してください。ただし、単一の値しか期待していないため、このケースでは何もしないでください。すべてのOver()関数は、結果セットを単一の行に制限するために必要と集約を行います。

結果

Results

+0

ブリリアント!多くの感謝のscimon! 私はSpotifreにはまだ新しく、表現の中でノードのナビゲーションにはまだ苦労しています。私はIF文がデータを制限しているが、Previousのようなメソッドを使ってナビゲートできるノードが作られていることを認識していなかったし、Intersectを使ってエスケープする必要がある。 もう一度多くのおかげです。 – MaxSense

+0

全員で心配なし – scsimon

関連する問題