1

以前に、インクリメントされた ID フィールドを介して単純な前の行を取得する方法について質問しました (Petr Havlík に感謝します)。この場合、ID と ACTIVITY があります。(ACTIVITY&ID) は行ごとの一意の値です。

SQL の観点からは、結合されたテーブルで ACTIVITY = Joined ACTIVITY および ID = ID - 1 の内部結合を実行し、必要な行を取得するだけです。

つまり、同じアクティビティに属する前のパーセンテージが必要です。

そのため、前の投稿の回答を使用して、1000 行で必要な結果を得ることができました。ただし、この行数を 85000 以上に増やすと、この関数は非常に遅くなります。

=SUMX(FILTER ( Query, (EARLIER ( [ID] ) = [ID] + 1)&&(EARLIER([ACTIVITY])=[ACTIVITY])),[PERCENTAGE])

私の最終結果は、最大700万行でこの関数を作成することです.これが可能であれば、どうすれば最適化できますか? そうでない場合は、なぜできないのか説明していただけますか?

同じ ID とアクティビティで前の行をフェッチする

4

3 に答える 3

3

1 つのオプションは、アプローチのバリエーションを試すことです。データセットがないと、より効率的かどうかをテストできませんが、1m 以上の行のデータセットで同様のことを問題なく実行しました。

=
CALCULATE (
    SUM ( [PERCENTAGE] ),
    FILTER (
        Query,
        [ID] = EARLIER ( [ID] ) - 1
        && [ACTIVITY] = EARLIER ( [ACTIVITY] )
    )
)

おそらく聞きたいことではありませんが、インポート時にSQLでこれを行うのがおそらく最善の策です。

于 2014-11-18T16:56:53.423 に答える
2

Jシュメイ

これはほとんど同じ質問です。Jacob が提案したように、Excel/PowerPivot で通常使用できる論理演算子を使用できます。

あなたは本当にこれに夢中になることができます.もっと複雑なものが必要な場合-たとえば、他の条件に従って2つのポイントの違いを得るには、非常によく似た質問とそれらに対する私の答えを示します:

お役に立てれば :)

于 2014-11-18T22:03:55.093 に答える