Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

Dynamic OVER(PARTITION BY) DAX Equivalent

I have a table where I need to derive the number of visits per customer, depending on report level context.      Number of Total Visits = CALCULATE(SUM([Visits Number]), ALLEXCEPT([Customer_...
  • Anonymous's avatar
    Anonymous
    6 years ago

     

    // Total number of visits
    [# Visits] = SUM( T[Visits Number] )
    
    // Returns the bucket for the
    // total number of visits;
    // you might need to adjust the
    // limits in the disconnected
    // Buckets table (500 might not
    // be enough).
    [Visit Bucket] =
    var __visitCount = [# Visits]
    return
    	CALCULATE(
    		SELECTEDVALUE( Buckets[Bucket] ),
    		Buckets[Min] <= __visitCount,
    		__visitCount <= Buckets[Max],
    		ALL( Buckets )
    	)
    
    // For any slicing, it shows you
    // the number of customers that fall
    // into a selected bucket.
    [# Customers in Bucket] =
    var __currentBucket =
    	SELECTEDVALUE( Buckets[Bucket] )
    var __output =
    	SUMX(
    		VALUES( T[Customer ID] ),
    		1 * ( [Visit Bucket] = __currentBucket )
    	)
    return
    	if( __output > 0, __output )