Conversione formula da DAX a SQL per il cubo di Datawarehouse L’argomento è risolto

SQL Server, Oracle, MySQL...

elyfiora
Messaggi: 26 | Topic creati
Iscritto il: mer 7 apr 2021, 19:39
Ringraziato: 1 volta

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Messaggio 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)


Avatar utente

Lodovico D'Incau
Messaggi: 87 | Topic creati
Iscritto il: lun 29 giu 2020, 17:56
Ringraziato: 27 volte
Contatta:

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Messaggio 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))

Vuoi approfondire le tue conoscenze sul pacchetto Microsoft 365?
Vieni a scoprire i corsi gratuiti nel mio canale youtube:
https://www.youtube.com/lodovicodincau

Autore del topic
elyfiora
Messaggi: 26 | Topic creati
Iscritto il: mer 7 apr 2021, 19:39
Ringraziato: 1 volta

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Messaggio 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.
Avatar utente

Lodovico D'Incau
Messaggi: 87 | Topic creati
Iscritto il: lun 29 giu 2020, 17:56
Ringraziato: 27 volte
Contatta:

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Messaggio 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?
Vuoi approfondire le tue conoscenze sul pacchetto Microsoft 365?
Vieni a scoprire i corsi gratuiti nel mio canale youtube:
https://www.youtube.com/lodovicodincau

Autore del topic
elyfiora
Messaggi: 26 | Topic creati
Iscritto il: mer 7 apr 2021, 19:39
Ringraziato: 1 volta

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Messaggio 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
Avatar utente

Lodovico D'Incau
Messaggi: 87 | Topic creati
Iscritto il: lun 29 giu 2020, 17:56
Ringraziato: 27 volte
Contatta:

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Messaggio 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
Vuoi approfondire le tue conoscenze sul pacchetto Microsoft 365?
Vieni a scoprire i corsi gratuiti nel mio canale youtube:
https://www.youtube.com/lodovicodincau

Autore del topic
elyfiora
Messaggi: 26 | Topic creati
Iscritto il: mer 7 apr 2021, 19:39
Ringraziato: 1 volta

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Messaggio 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.
Allegati
Architettura
Architettura
Modello BI.png (105.68 KiB) Visto 593 volte
Avatar utente

Lodovico D'Incau
Messaggi: 87 | Topic creati
Iscritto il: lun 29 giu 2020, 17:56
Ringraziato: 27 volte
Contatta:

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Messaggio 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
Vuoi approfondire le tue conoscenze sul pacchetto Microsoft 365?
Vieni a scoprire i corsi gratuiti nel mio canale youtube:
https://www.youtube.com/lodovicodincau

Autore del topic
elyfiora
Messaggi: 26 | Topic creati
Iscritto il: mer 7 apr 2021, 19:39
Ringraziato: 1 volta

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Messaggio 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
Avatar utente

Lodovico D'Incau
Messaggi: 87 | Topic creati
Iscritto il: lun 29 giu 2020, 17:56
Ringraziato: 27 volte
Contatta:

Conversione formula da DAX a SQL per il cubo di Datawarehouse

Messaggio 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.
Vuoi approfondire le tue conoscenze sul pacchetto Microsoft 365?
Vieni a scoprire i corsi gratuiti nel mio canale youtube:
https://www.youtube.com/lodovicodincau
Rispondi