2

アイテムがエラー状態にあった時間を判断できるようにする必要がある PowerPivot テーブルがあります。私のデータセットは次のようになります。

ここに画像の説明を入力

ID 列と State 列の値を見て、前の行の値が State 列の ERROR であり、ID 列の値も同じかどうかを確認する必要があります。そうである場合は、これら 2 つの行の Changed Date の値の差を計算する必要があります。

したがって、たとえば、行 4 に到達すると、前の行である行 3 の State 列の値が ERROR であり、前の行の ID 列の値が同じであることがわかります。行 3 と行 4 の変更日の値の差を計算します (この特定の要件では、他の列の値は気にしません)。

PowerPivot でこれを行う方法はありますか? 私はかなりの量のインターネット検索を行いましたが、それが可能であれば EARLIER または EARLIEST DAX 関数を使用するように見えますが、これがどのように、または可能性があるかを教えてくれるものは何も見つかりません終わり。

ありがとう。

4

1 に答える 1

3

クリス

私は何度も同様の要件を抱えており、非常に長い試行錯誤の末、ようやくEARLIERがどのように機能するかを理解しました。これは非常に強力ですが、非常に遅い場合もあるため、常に計算のパフォーマンスを確認してください。

あなたの質問に答えるには、4 つの計算列を作成する必要があります。

1)アイテム ランク- 同じアイテム IDを持つ問題のランク付けに使用されます

=COUNTROWS(FILTER('ID', EARLIER([Item ID]) = [Item ID] && EARLIER([Date]) >= [Date]))

2)エラーに続く - EROR問題に続く問題を簡単に見つける

=IF([State] = "EROR",[Item Rank]+1)

3)次の問題の時間- 異なる時間を計算できるように単純なルックアップ

=IF([Follows Error]>0, 
  LOOKUPVALUE([Date], [User], [User], [Item Rank], [Follows Error]), 
  BLANK()
)

4) Time Diff - 特定の問題の時間差の計算

=IF([State]="EROR",
  DAY([Time of Following Issue])-DAY([Date]),
  BLANK()
)

これらの計算された列を使用して、powerpivot テーブルを簡単に作成し、StateItem IdROWSペインにドラッグして、 Time Diff to Valuesを追加するだけです。文字列「EROR」の問題を含む問題の概要と、それらの解決にかかった時間が表示されます。

これは、PowerPivot ウィンドウで次のように表示されます。

ここに画像の説明を入力

結果のピボットテーブル:

ここに画像の説明を入力

私のExcel ファイルはこちら(2013) からダウンロードできます。

先に述べたように、入れ子になった EARLIER 条件と IF 条件を持つ計算列は、パフォーマンスが少し要求される可能性があるため、パフォーマンスに注意してください。よりスマートな方法があれば、それを見てとてもうれしいですが、今のところこれでうまくいきます。

また、すべての計算列を 1 つにネストすることもできますが、数式を理解しやすくするために分離したままにしておきます。

お役に立てれば :-)

于 2014-10-08T23:10:27.607 に答える