Pagina 1 di 1

MODIFICA RAPIDA MISURA

Inviato: sab 4 set 2021, 13:58
da Alieno86
Buongiorno,
mi trovo a dover creare una trentina di misure e vorrei chiedervi se c'è possibilità di crearle velocemente;
la misura di base e questa:

Codice: Seleziona tutto

STIPENDIO BASE=
VAR FILTRO=FILTER('2019-2021';[COD_VOCE]=1 && [PRECODICE]<>"T"&&[ANNO_RIFERIM]=2020)

VAR RESULT = SUMX (FILTRO;'2019-2021'[IMPORTO_U])

RETURN
RESULT
Le misure differiscono per i diversi filtri e possono essere presenti più codici voce con legame or, ho provato a fare una cosa del genere ma non funziona,

Codice: Seleziona tutto

 
 
 STIPENDIO BASE=

VAR COD1=[COD_VOCE]=1
VAR PREC=[PRECODICE]<>"T"
VAR COMP=[ANNO_RIFERIM]=2020

VAR FILTRO=FILTER('2019-2021';COD1 &&PREC&&COMP)

VAR RESULT = SUMX (FILTRO;'2019-2021'[IMPORTO_U])

RETURN
RESULT
 


Esiste un modo per fare qualcosa del genere in modo da velocizzare la creazione delle misure?

MODIFICA RAPIDA MISURA

Inviato: sab 4 set 2021, 14:55
da Andrea90
Ciao Alieno86,

Quando tu scrivi:

COD1 && PREC && COMP

Come pensi lavori il Dax quando valuta quel filter? Perché è importante sapere questo, in modo tale da capire dove risiede l’errore.

Se tu salvi quei tre valori come variabili, le variabili in Dax sono valori fissi quindi una volta che vengono valorizzati, il loro valore rimane uguale, indipendentemente dal contesto in cui lo inserisci.

E questo è appunto un problema se tu e utilizzi in quel modo dentro ad un Filter, il quale è un iteratore e quindi scorre la tabella riga per riga andando a valutare una condizione, ma se tu la condizione l’hai inserita in una variabile l’unica cosa che ti riporta è un TRUE o FALSE.

Pertanto dal punto di vista logico non può funzionare quella formula, per il motivo che ti ho indicato prima.

Non vedo tanti modi possibili per rendere dinamica quella formula. Penso che dovrai crearti delle misure ad hoc, almeno guardando quel codice che hai scritto, senza vedere il modello.

A presto,
Andrea

MODIFICA RAPIDA MISURA

Inviato: sab 4 set 2021, 15:35
da Enrico Galli
Ciao! Se non altro, se scarichi Excel Swiss Knife, puoi creare 30 duplicati della misura "modello" con un solo clic ;)

MODIFICA RAPIDA MISURA

Inviato: sab 4 set 2021, 15:40
da Alieno86
a me andrebbe anche bene li prendesse come valori fissi, poi mi basterebbe copiare la misura e cambiare i parametri delle tre variabili.
purtroppo l'espressione non è proprio valida, modificherò ogni misura.
Una domanda al volo è possibile in dax usare nella funzione filter qualcosa che funzioni tipo IN sql
es:
WHERE [COD_VOCE]IN(1,2,3)

Invece di dover fare una cosa del genere, che è l'unica che mi funziona.

Codice: Seleziona tutto


=
VAR FILTRO1=FILTER('2019-2021';[COD_VOCE]=1 && [PRECODICE]<>"T"&&[ANNO_RIFERIM]=2020)
VAR V1=SUMX (FILTRO1;'2019-2021'[IMPORTO_U])

VAR FILTRO2=FILTER('2019-2021';[COD_VOCE]=6 && [PRECODICE]<>"T"&&[ANNO_RIFERIM]=2020)
VAR V2=SUMX (FILTRO2;'2019-2021'[IMPORTO_U])

VAR RESULT = V1+V2

RETURN
RESULT

MODIFICA RAPIDA MISURA

Inviato: sab 4 set 2021, 16:03
da Andrea90
In Dax puoi utilizzare la keyword IN esattamente come hai indicato. Se vuoi maggiore aiuto gira un file demo con un tuo tentativo, non importa che sia il file originale, basta una tabella con qualche dato ed il risultato desiderato.

Andrea

MODIFICA RAPIDA MISURA

Inviato: sab 4 set 2021, 16:27
da Alieno86
Questa è una demo, spero vada bene.

MODIFICA RAPIDA MISURA

Inviato: sab 4 set 2021, 18:07
da Andrea90
Ciao Alieno86,

Io consiglio sempre di formattare il codice, in DAX sennò si fa veramente fatica a capire il senso logico delle formule:

Codice: Seleziona tutto

=
VAR FILTRO =
    FILTER (
        'Tabella3';
        [COD_VOCE] IN {1; 5028}
            && [PRECODICE] <> "T"
            && [ANNO_RIFERIM] = 2020
    )
VAR RESULT =
    SUMX ( FILTRO; 'Tabella3'[IMPORTO_U] )
RETURN
    RESULT
Questa utilizza IN, prova a vedere se è quello che desideravi ottenere.

Andrea

MODIFICA RAPIDA MISURA

Inviato: sab 4 set 2021, 18:20
da Alieno86
si perfetto, non ho pensato di provare con le parentesi graffe, grazie mille.