DAX ALLEXCEPT per sommare per categoria di più tabelle di dimensione
Vorrei calcolare il totale per categoria. La categoria è nella tabella delle dimensioni.
Ecco un file di esempio: DAX ALLEXCEPT totale per categoria.pbix
Ho il seguente modello:
Questi sono i miei risultati attesi. Totale per colore:
Pensavo di poter ottenere i risultati attesi con la seguente misura:
ALLEXCEPT_color =CALCULATE ( , ALLEXCEPT ( FactTable, -- surprisingly 'dim1' table in that place gives wrong results dim1 ))
O in alternativa usando il metodo suggerito da Alberto Ferrari https://www.sqlbi.com/articles/using-allexcept-versus-all-and-values/:
ALL_VALUES_color = CALCULATE ( , ALL (FactTable), -- again, 'dim1' produces wrong results, has to be FactTable VALUES ( dim1 ) )
Entrambe queste misure funzionano e restituiscono risultati adeguati. Tuttavia moltiplicano i risultati visualizzati facendo il prodotto cartesiano di tutte le dimensioni. Perché? Come evitarlo?
Io ottengo i risultati attesi con la misura:
Expected_Results_Color =IF ( ISBLANK ( ), BLANK (), )
Probabilmente mi manca qualcosa della funzione ALLEXCEPT
per cui non ottengo ciò che voglio al primo colpo. Qual è la logica dietro l’uso della funzione ALLEXCEPT con più tabelle, specialmente con dimensioni lontane, lontano dal centro dello schema a stella.
Quale schema usare? Qui ho trovato una soluzione promettente che assomiglia a questa:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( dim1, dim1 ), ALLEXCEPT ( dim2, dim2 ), ALLEXCEPT ( dim3, dim3 ))
Ma come ho provato prima non funziona. Non aggrega per dimensioni ma produce come sono.
Così ho scoperto che questa è la direzione corretta:
ByCategories =CALCULATE ( SUM ( FactTable ), ALLEXCEPT ( FactTable, -- here be difference dim1, dim2, dim3 ))
Ipotizzo che ci potrebbe essere anche un altro modo.
Measure = var MyTableVariable = ADDCOLUMNS ( VALUES ( dim1 ), "GroupedSales", ) RETURN ...
Se solo potessimo recuperare il singolo valore scalare di GroupedSales da MyTableVariable e abbinarlo al colore appropriato nella tabella visiva.
Sarei molto grato per qualsiasi ulteriore approfondimento nel calcolo del totale per categoria.