Pagina 1 di 4

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Inviato: mer 7 apr 2021, 20:13
da elyfiora
Ciao a tutti.

Ho la tabella Cast così fatta:

Progetto Data bFP
A 01/01/2021 100
A 01/05/2021 120


La tabella Cast è collegata alla tabella Calendar tramite data. La tabella Calendar contiene tutte le date. La tabella Cast non contiene valori per tutte le date.
Mi aspetto di vedere i BFP in trend temporale dove per le date mancanti mi fa vedere l’ultimo valore disponibile:

MMYY bFP Progetto
gen-21 100 A
feb-21 100 A
mar-21 100 A
apr-21 100 A
mag-21 120 A

Ho quindi elaborato questa formula:

Codice: Seleziona tutto

CastBFP:=
SUMX (
    SUMMARIZE (
        Cast,
        Cast[sk_CastProject],
        "myXBFP", 
            CALCULATE (
                CALCULATE (
                    MAX ( Cast[bFP] ),
                    LASTNONBLANK ( Calendar[Data], CALCULATE ( MAX ( Cast[bFP] ) ) )
                ),
    ),
    [myXBFP]
)

Che però mi fa vedere:

bFP Progetto
gen-21 100 A
feb-21 A
mar-21 A
apr-21 A
mag-21 120 A


Ovvero per febbraio, marzo e aprile, non mi fa vedere il dato mentre io mi aspetto di vedere l’ultimo disponibile ovvero 100.

In PowerBI mi hanno suggerito di usare la seguente formula che funziona perfettamente:

Codice: Seleziona tutto

mesasure2 = 
VAR _date=max('Calendar'[Date])
VAR _date2= MAXX(FILTER(all(Cast),'Cast'[Date]<=_date),'Cast'[Date])
return MAXX(FILTER(all(Cast),Cast[Date]=_date2),Cast[bFP])
Non riesco però a scrivere l'equivalente all'interno del cubo.
Voi avete suggerimenti?

Grazie
Elisa

(Nota del moderatore: Aggiunti i tag al codice)

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Inviato: mer 7 apr 2021, 21:29
da Lodovico D'Incau
L'ho scritta col Cell e molto a naso, più o meno dovrebbe essere una cosa del genere.

Codice: Seleziona tutto

Select Max(cast.date) as date from cast
Where  cast.date =
    (Select Max(cast.date) as date from cast
              Where cast.date <=
                       (Select max(date) as date from calendar))


Conversione formula da DAX a SQL per il cubo di Datawarehouse

Inviato: mer 7 apr 2021, 21:39
da elyfiora
Grazie per il aiuto.
Mi chiedo come questo possa essere scritto come misura nel cubo analysis service - per intenderci quando scrivi le misure in visual studio per creare il tuo modello di cui poi fai il deploy per costruire la reportistica.

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Inviato: mer 7 apr 2021, 21:42
da Lodovico D'Incau
Allora era come pensavo io, avevo il dubbio che volessi convertire la misura in una query sql...
In as dovrebbe essere uguale, mi sfugge cosa non funziona.
Che errore ti da?

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Inviato: mer 7 apr 2021, 21:47
da elyfiora
Intendi che dovrei usare in AS la tua formula? Oppure quella che mi è stata fornita in DAX per il power bi? Se intendi quella che mi è stata fornita per power bi, non riconosce proprio la sintassi delle formule scritte in quel modo.
Grazie

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Inviato: mer 7 apr 2021, 22:23
da Lodovico D'Incau
Solo per capire meglio.
Hai un as su azure cloud e accedi con Visual studio e collegandoti con il componente aggiuntivo provi ad inserire la misura ma ti dice che non riconosce la formula dax?
Su as non ne so ancora molto, lo stavo per approcciare ma alla fine penso che lo elimineremo usando i set caricati in powerbi, si ottiene lo stesso risultato con meno costi XD

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Inviato: gio 8 apr 2021, 8:14
da elyfiora
Mi spiego meglio, ieri sera ho fatto confusione. Ho un data warehouse in SQL.
Poi mi sono costruita un modello tabulare utilizzando il programma SQL Server Data Tools all'interno del quale ho tutte le mie misure.
I vari report in Power BI si collegano a questo modello.
Vorrei riportare la misura descritta sopra nel modello tabulare che utilizzo in SQL Server Data Tools.
Il modello tabulare è fisicamente sulla stessa macchina dove si trova il database data warehouse SQL e non su Cloud.

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Inviato: gio 8 apr 2021, 20:00
da Lodovico D'Incau
Ok, ho capito bene come sei strutturata ora, (non è una buona idea abilitare as nella stessa macchina del sql, anche se per questioni di costi conviene farlo. (è una questione di gestione delle risorse)
Cmq a prescindere da questo li in analysis service mi aspetto che la misura che hai esposto sopra funzioni senza problemi.
Hai scritto che non riconosce il codice, forse la stai inserendo nel posto sbagliato?

Minuto 22:30

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Inviato: ven 9 apr 2021, 10:45
da elyfiora
Ciao, grazie per la risposta. Prima di tutto devo spezzettare la misura nelle tre formule ma non è un grosso problema.
Il punto più grosso è che questa formula funziona solo se nella tabella Cast ho un solo progetto per ogni data, mentre io ho più valori dello stesso progetto per date diverse ad esempio:

Progetto Data bFP
A 01-01-2020 100
A 01-03-2020 102
B 05-04-2020 500
B 06-05-2020 520

e io voglio sempre vedere mese per mese il valore più recente per ogni progetto

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Inviato: sab 10 apr 2021, 19:55
da Lodovico D'Incau
Ciao Ely, se riesci a fornirci un piccolo file excel fatto con la struttura del tuo modello ci giochiamo un attimo e proviamo ad aiutarti.
Senza i dati alla mano col dax si fa fatica ad immaginare e poi creare la formula.