1

次のように、PowerPivot データ モデルに OpportunityID の単純なリストがあります。

OPPORTUNITY_ID    
1                   
2                
3                 
3                 
3                  
4                 
4                 
5                 

そして、次のように、各 OpportunityID の出現回数をカウントする CalculatedColumn に DAX 式を追加したいと考えています。

OPPORTUNITY_ID    COUNT
1                 1    
2                 1
3                 1
3                 2
3                 3     
4                 1
4                 2
5                 1

そのため、OpportunityID が複数回出現する場合、カウントは累積的に表示されます (例: 1、2、3 など)。

これを行う多くの方法を試しましたが、何も機能しません。その答えは RANKX 式にあると思いますが、それを機能させる方法がわかりません。

どんな助けでも大歓迎です!

4

4 に答える 4

0

DAXではこれを理解できなかったので、最終的にこのSQL行をソースデータクエリに追加しました

SELECT    
ROW_NUMBER() OVER(PARTITION BY co.[OpportunityID] ORDER BY co.[OpportunityID] DESC) AS Row
于 2013-11-04T09:55:09.333 に答える
0

DAX でこれを適切に測定する方法は次のとおりです。

DistinctOpportunities:=DISTINCTCOUNT([OpportunityID])
于 2015-08-10T16:14:26.500 に答える
0

SQL ROW_NUMBER() ウィンドウ関数に相当する DAX はありません。同一の行間の「関係」を決定論的に断ち切るための別のフィールドがなければ、同じ結果を達成することはできません。

そうは言っても、DAX で一意のインスタンスのみを合計するのは非常に簡単です。ここで問題となるのは、「SQL の ROW_NUMBER() に相当するものを取得する必要がある」ではなく、「一意の出現のみを合計する必要がある」ということです。前者は、後者を達成するための 1 つの方法にすぎません。

DAX では、SUMMARIZE() を使用して、テーブル内の任意のフィールドでグループ化できます。SUMX() を使用して、任意のテーブルを反復処理し、行ごとに評価された式を合計に累積できます。

したがって、テーブルがある場合は

Opportunity_ID  |  Opportunity_Value
     1                   100
     2                   150
     3                   200
     3                   200
     3                   200
     4                   75
     4                   75
     5                   300

次に、このメジャーを使用して、各 Opportunity_ID の個別の値のみの合計を取得できます。

UniqueSum:=
SUMX(
    SUMMARIZE(
        FactOpportunity
        ,FactOpportunity[Opportunity_ID]
        ,FactOpportunity[Opportunity_Value]
    )
    ,FactOpportunity[Opportunity_Value]
)

ここでは、FactOpportunity の名前付きフィールドでグループ化します。SUMMARIZE() によって定義されたテーブルは、次のようになります。

Opportunity_ID  |  Opportunity_Value
     1                   100
     2                   150
     3                   200
     4                   75
     5                   300

次に、SUMX() はその結果テーブルの各行を反復処理し、各行の [Opportunity_Value] の値を評価します。これらを合計すると、合計で 825 になります。

于 2015-12-29T22:30:50.920 に答える