0

私はググって、あまりにも遅い数式で終わり続けています。数式を段階的に分割すると (計算列を作成する)、パフォーマンスがいくらか向上するのではないかと思います。

スライサーになるいくつかの数値列を持つテーブルがあります。意図は、選択したスライサーのいくつかの数値列で 10、25、50、75、および 90 パーセンタイルを持つことです。

これは、列「合計 Pd」の 10 パーセンタイルに対して私が持っているものです。

TotalPaid10thPercentile:=MINX(
                              FILTER(
                                     VALUES(ClaimOutcomes[Total Pd]),
                                     CALCULATE(
                                               COUNTROWS(ClaimOutcomes),
                                               ClaimOutcomes[Total Pd] <= EARLIER(ClaimOutcomes[Total Pd]) 
                                              )> COUNTROWS(ClaimOutcomes)*0.1
                                    ),
                               ClaimOutcomes[Total Pd]
                             )

数分かかりますが、まだデータが表示されません。このテーブルには約 300K のレコードがあります。

4

1 に答える 1

2

計算を一連のステップに分割する方法を見つけたところ、非常に高速な解が得られました。

Amount Paid表の 10 パーセンタイルを計算するためDataに、以下の定型外の式に従いました。

10 パーセンタイル要素の順序ランクを計算する

10ptOrdinalRank:=0.10*(COUNTX('Data', [Amount Paid]) - 1) + 1

112.45 のような 10 進数 (分数) になる場合があります。

小数部を計算する

10ptDecPart:=[10ptOrdinalRank] - TRUNC([10ptOrdinalRank])

すぐ下の要素 (floor) の序数ランクを計算します

10ptFloorElementRank:=FLOOR([10ptOrdinalRank],1)

すぐ上 (天井) の要素の序数を計算します。

10ptCeilingElementRank:=CEILING([10ptOrdinalRank], 1)

フロアに対応する計算要素

10ptFloorElement:=MAXX(TOPN([10ptFloorElementRank], 'Data',[Amount Paid],1), [Amount Paid])

天井に対応する計算要素

10ptCeilingElement:=MAXX(TOPN([10ptCeilingElementRank], 'Data',[Amount Paid],1), [Amount Paid])

パーセンタイル値を計算する

10thPercValue:=[10ptFloorElement] + [10ptDecPart]*([10ptCeilingElement]-[10ptFloorElement])

ネットで見つけた他のソリューションよりもパフォーマンスが著しく高速であることがわかりました。将来誰かに役立つことを願っています。

于 2015-06-23T03:37:05.843 に答える