2013-04-01 20 views
5

Sto cercando un metodo da utilizzare entro Microsoft PowerPivot 2010 che mi consentirà di eseguire un ranking dinamico che aggiornerà automaticamente il valore di classifica associato in base a filtri e affettatrice valori che vengono applicati.PowerPivot DAX - Classifica dinamica per gruppo (Minimo per gruppo)

Quindi, tutti gli esempi che ho visto utilizzano la funzione DAX Calculate() che sovrascrive i filtri esistenti all'interno della tabella PowerPivot tramite la funzione Tutto() che fa sì che i filtri predefiniti che gli utenti potrebbero applicare non vengano presi in considerazione.

Per illustrare le mie esigenze, si prega di riferimento il seguente esempio:

(Dati di origine all'interno di PowerPivot Finestra :)

------------------------------------------------------------------------------------- 
Claim Number | Claimant Number | Transaction Date |   Dollar Amount 
------------------------------------------------------------------------------------ 
ABCD123456   4    1/1/2012     $145.23 
ABCD123456   4    8/1/2012     $205.12 
ABCD123456   4    9/1/2012     $390.74 
VDSF123455   2    3/5/2012     $10.12 
VDSF123455   2    9/5/2012     $50.12   
VDSF123455   2    12/9/2012     $210.45 
------------------------------------------------------------------------------------------ 

Ora, mi piacerebbe avere la possibilità di visualizzare solo la quantità di dollari per ogni numero di reclamo e numero di richiedente in base alla PRIMA data della transazione. Vorrei essenzialmente mostrare solo dollari legati alla prima transazione legata a ciascun numero di reclamo e numero di reclami.

La mia idea era quella di creare un rango dinamico per ciascun gruppo [numero reclamo + numero attendente] simile alla funzione "partizione per - Riga_Numero()". In questo modo, ciascun gruppo [numero di reclamo + numero di richiedente] contenente un valore di rango 1 rappresenterebbe la PRIMA transazione legata a questo valore.

Tuttavia, sarebbe necessario modificare questo valore di classifica se un utente applica un filtro ai dati all'interno della tabella pivot risultante.

Questo può essere illustrato di seguito sulla base dei dati di esempio sopra definiti:

---------------------------------------------------------------------------------------------- 
Claim Number | Claimant Number | Transaction Date | Dollar Amount | Rank | 
--------------------------------------------------------------------------------------------- 
ABCD123456    4    1/1/2012   $145.23  1 
ABCD123456    4    8/1/2012   $205.12  2 
ABCD123456    4    9/1/2012   $390.74  3 
VDSF123455    2    3/5/2012   $10.12   1 
VDSF123455    2    9/5/2012   $50.12   2 
VDSF123455    2    12/9/2012   $210.45  3 
------------------------------------------------------------------------------------------------ 

Ora, se un utente applica un filtro tramite un'affettatrice o tramite la discesa del filtro all'interno di una tabella o all'interno della tabella PowerPivot escludendosi date di valutazione < 2/1/2012, il valore di rango dovrebbero aggiorna automaticamente ed essere riflessa come illustrato di seguito:

(filtri applicati)

============================================================================= 
Claim Number | Claimant Number | Transaction Date | Dollar Amount | Rank | 
============================================================================ 
ABCD123456   4     8/1/2012   $205.12  1 
ABCD123456   4     9/1/2012   $390.74  2 
VDSF123455   2     3/5/2012   $10.12  1 
VDSF123455   2     9/5/2012   $50.12  2 
VDSF123455   2    12/9/2012   $210.45  3 
=========================================================================== 

Come si può vedere, il valore di classifica è stato automaticamente aggiornato per il primo gruppo di reclami basato su una delle righe legate al numero di attestazioni ABCD123456 nascosto, in base al filtro applicato dall'utente.

Vorrei poi per creare una misura aggiuntiva all'interno della tabella di PowerPivot che visualizzerebbe l'importo in dollari SOLO legato alla transazione che contiene un valore di rango di 1 come illustrato di seguito:

(Filtri applicati, Nuova misura aggiunta)

=============================================================================================== 
Claim Number | Claimant Number | Transaction Date | Dollar Amount | Rank | Opening Dollar Amt| 
================================================================================================ 
ABCD123456   4     8/1/2012   $205.12   1   $205.12 
ABCD123456   4     9/1/2012   $390.74   2   
VDSF123455   2     3/5/2012   $10.12   1   $50.12 
VDSF123455   2     9/5/2012   $50.12   2 
VDSF123455   2     12/9/2012   $210.45   3 

=========================================== ================================================== ==

Una tabella pivot corrispondente può quindi essere creata facendo riferimento a questi dati in modo che la "Bambola di apertura" ar Amt "misura rappresenterebbe solo i dollari legati alla prima transazione per gruppo come descritto sopra.

Apprezzerei molto se qualcuno potesse delineare come ciò potrebbe essere realizzato.

Ho pensato che l'approccio dinamico alla classifica potrebbe essere una buona idea per questo, ma se qualcuno ha un'idea migliore per raggiungere il mio risultato finale/obiettivo è ottenere semplicemente l'importo in dollari legato alla prima transazione "VISIBILE" (basato su ogni utente ha applicato i filtri) PER GRUPPO Sarei aperto a qualsiasi approccio tu possa avere.

risposta

3

Anche se questa è una domanda ben scritta che hai ovviamente messo il tempo in formulazione, dovresti read this about cross posting in forum s. Questa è una chiara duplicazione di qualcosa che hai pubblicato su MSDN esattamente nello stesso momento. Ho risposto in entrambi vedendo come una domanda decente.

Innanzitutto ho creato una misura di base [Importo] per sommare la colonna dell'importo in dollari. Allora ho usato che entro RANKX() per creare il seguente:

[Rank] = RANKX(
     FILTER(
     ALLSELECTED(Table1),Table1[Claimant Number]=max(Table1[Claimant Number]) 
        ), 
     [Amount], 
      ,1) 

La chiave è la tabella che la misura [Importo] viene iterata over - ALLSELECTED() porta solo la roba nel contesto filtro corrente in gioco e l'espressione all'interno di FILTER() limita la tabella al numero di attestazione corrente.

Dopo di che si trattava di un compito semplice per restituire il [Importo] basata sulla necessità o meno il [Rank] è stato di 1:

[Opening Balance] = if([Rank]=1,[Amount],BLANK()) 

Spero che questo ha un senso, ho postato il mio lavorazioni su SkyDrive se aiutano .

Jacob