Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

In questo post del blog, daremo un'occhiata a una domanda che è stata posta sul forum LuckyTemplates e utilizzeremo una tecnica LuckyTemplates del linguaggio DAX per risolverla. Nel caso in cui desideri seguire e scaricare i file, visita il forum LuckyTemplates e vai a . Puoi guardare il video completo di questo tutorial in fondo a questo blog.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Per spiegare lo scenario che tratteremo, abbiamo una semplice tabella come esempio. Nella prima colonna, abbiamo il livello finanziario 1 . Nella seconda colonna, abbiamo una data denominata Completato. Nell'ultima colonna abbiamo la combinazione di livello finanziario e data di completamento, che chiameremo Entrate .

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Quindi abbiamo un'affettatrice per la data e il nome del cliente .

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Quello che vogliamo fare per un periodo di tempo specifico è identificare le prime tre date diverse da zero. E poi in quelle prime tre date, vogliamo identificare il livello finanziario.

Nella prima versione del provvedimento ho elencato le date inferiori al 29/04/2021 in cui abbiamo delle entrate.

E in queste date, vogliamo identificare i livelli finanziari che hanno fatto delle entrate. Vi spiegherò come possiamo ottenere tale calcolo.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Sommario

Modellazione dei dati

Prima di scrivere il DAX vero e proprio, diamo una rapida occhiata al modello di dati che contiene più tabelle. Siamo interessati solo alla tabella Data , alla tabella Dati , alla tabella Categoria lavoro e alla tabella Cliente .

Si noti che la tabella Customer non è molto importante perché viene utilizzata solo all'interno di un'affettatrice.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

La misura delle entrate viene calcolata nella tabella Dati. La categoria Lavoro contiene il livello finanziario che abbiamo sulla matrice. Quindi stiamo usando la colonna Data dalla tabella Data nella nostra affettatrice.

Versione 1

Liberiamoci di tutto dalla matrice e ricominciamo da capo. Creerò una nuova misura e la chiamerò V1 perché questa sarà la prima versione. Daremo un'occhiata anche ad altre due varianti.

Preparazione del contesto del filtro

La prima cosa che faremo è recuperare tutti i valori del livello finanziario dal contesto del filtro. Creeremo una e la chiameremo FinancialLevelInFilterContext .

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Per recuperare i valori dal contesto del filtro, utilizzeremo la nella tabella delle categorie di lavoro che contiene la colonna del livello finanziario. Quindi dobbiamo creare un'altra variabile e denominarla Result . Quindi scrivi e chiudi anche questo.

Nel primo argomento, abbiamo una selezione sull'affettatrice di date. In quelle date, vogliamo identificare le date che non hanno uno 0 e hanno almeno un ricavo.

Se si desidera accedere a tutte le date selezionate in quell'affettatrice, è necessario utilizzare la sulla tabella Date.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

E poiché abbiamo il livello finanziario sulla matrice, dobbiamo anche assicurarci di rimuovere quel particolare valore dal contesto del filtro. Possiamo utilizzare la sulla categoria Job e quindi scrivere Financial Level 1.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Ora che il nostro contesto di filtro è preparato, possiamo scrivere il calcolo più interno per CALCULATE. Innanzitutto, dichiareremo una variabile, che sarà una combinazione del livello finanziario e della colonna della data, come abbiamo visto nella prima tabella.

Quindi utilizzeremo la e utilizzeremo la tabella Dati per riepilogare queste due tabelle: Categoria lavoro e Tabella data.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Ciò fornirà la combinazione del livello finanziario e della colonna della data che esiste all'interno della tabella dei dati. Quindi creeremo un'altra variabile in cui memorizzeremo il valore della riga delle entrate per la prima variabile che abbiamo creato.

Il nome di questa variabile sarà FinancialLevelAndDatesWithRevenue . Il codice di questa variabile sarà sulla variabile precedente. Quindi creeremo una colonna virtuale che sarà Entrate per avviare la transizione del contesto. Quindi per ogni riga di questa variabile, abbiamo assegnato le entrate.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Questa tabella contiene le entrate, anch'esse pari a zero. Dobbiamo filtrare quelle righe con zero. Per fare ciò, possiamo creare un'altra variabile e chiamarla come RemoveZeroes .

Useremo la sulla variabile precedente, quindi ci assicureremo che le entrate non siano pari a zero. Può essere maggiore di zero o minore di zero, ma non deve essere strettamente uguale a zero.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

E poi recupereremo la data dalla variabile RemoveZeroes . Per fare ciò, possiamo creare un'altra variabile e chiamarla KeepOnlyDates .

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Posso usare la per eliminare le date duplicate che vengono restituite dalla .

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Successivamente, identificheremo le prime tre date in ordine decrescente. Useremo un'altra variabile e la chiameremo Last3Dates , quindi utilizzeremo la .

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Quindi utilizzeremo nelle ultime tre date nella colonna della data, quindi utilizzeremo un delimitatore.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Trasciniamo e rilasciamo la nostra misura appena creata all'interno di quella matrice. Il risultato che otteniamo è 31/03/2021, 07/04/2021 e 02/04/2021. Ciò significa che la nostra misura sta funzionando.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Torniamo all'editor ed eliminiamo la parte RETURN CONCATENATEX. Per recuperare quelle ultime tre date, quello che possiamo fare è verificare quali righe della variabile RemoveZeroes fanno effettivamente parte di quelle ultime tre date.

E per questo, creeremo un'altra variabile DatesInLast3Dates e utilizzeremo la funzione FILTER su RemoveZeroes . Questo restituirà una tabella che comprende una categoria di lavoro e una data.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Riassumeremo la colonna delle entrate che abbiamo creato all'interno di quella tabella. Restituiamo SUMX su DatesInLast3Dates, quindi riepiloghiamo la colonna delle entrate.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Con questo calcolo, otteniamo un solo valore per ogni riga, perché abbiamo rimosso la categoria Lavoro dal contesto del filtro.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Useremo la variabile che abbiamo creato all'inizio per controllare se ogni riga della variabile DatesInLast3Dates è disponibile nel contesto del filtro. Possiamo scrivere un'altra variabile e chiamarla IsInFilterContext .

Questo filtrerà le date nella variabile DatesInLast3Dates . Quindi restituirò SUMX sul contesto IsInFilter e riepilogherò la colonna delle entrate.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Una volta premuto Invio , puoi vedere che otteniamo lo stesso risultato che avevamo all'inizio.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Verifica del risultato del calcolo di LuckyTemplates del linguaggio DAX

Per verificare che stiamo effettivamente ottenendo il risultato corretto, possiamo creare una nuova tabella CALCULATE che ci aiuterà nel debug, nell'identificazione e nella verifica che il codice che abbiamo scritto finora stia effettivamente restituendo il risultato corretto.

Creiamo una copia del codice che abbiamo scritto finora. Copierò semplicemente la parte evidenziata di seguito, tornerò indietro per creare una nuova tabella e incollerò il codice evidenziato. Non ci preoccuperemo di nominare questo tavolo perché non ci interessa.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

E possiamo semplicemente scrivere RETURN DatesInLast3Dates . Se faccio clic su Confirm , otteniamo una tabella ma sappiamo che in realtà non sta ancora restituendo il risultato corretto perché in realtà abbiamo bisogno di imitare il comportamento dell'affettatrice.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Possiamo avvolgere quel codice all'interno di una CALCULATETABLE e indentare tutto. Nell'ultima parte, scriverò che la data dovrebbe essere maggiore o uguale a 2021-03-15 e che il nome del cliente dovrebbe essere uguale a DHL Supply Chain .

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

La tabella che abbiamo creato all'interno di quella misura restituisce virtualmente il risultato corretto. Possiamo usare una CALCULATETABLE per verificare la tabella virtuale che stai creando all'interno del tuo calcolo.

Altri calcoli di LuckyTemplates in linguaggio DAX

Ora che sappiamo che il nostro calcolo funziona e capiamo cosa sta effettivamente accadendo dietro le quinte, possiamo esaminare altri metodi per calcolare lo stesso problema. Prima di tutto, creiamo un duplicato della misura che abbiamo già creato.

Versione 2

Questa volta non faremo affidamento sulle funzioni VALUES e FILTER, quindi le elimineremo. Rimuoveremo il risultato restituito, così come l'ultima variabile che abbiamo creato all'interno di CALCULATE. Quindi, convertiremo CALCULATE in CALCULATETABLE.

E invece di restituire un valore scalare, questa volta restituiremo DatesInLast3Dates . Ciò restituirà la stessa CALCULATETABLE che abbiamo creato in precedenza. Utilizzeremo la funzione CALCULATE e, nel primo argomento, calcoleremo la misura delle entrate e inietteremo CALCULATETABLE come contesto del filtro.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Una volta che l'ho portato alla matrice, puoi vedere che stiamo restituendo lo stesso valore totale complessivo per ogni cella.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Utilizzo della funzione KEEPFILTERS

Al momento, sappiamo che il calcolo dietro le quinte funziona correttamente, ma come possiamo sapere con certezza che per ogni cella riportiamo solo il valore per quel livello finanziario?

Con l'aiuto di CALCULATETABLE, abbiamo creato una tabella che contiene il livello finanziario, la colonna della data e la colonna delle entrate. Possiamo usare la funzione filtro chiave per creare un'intersezione tra il contesto del filtro che esiste al di fuori di CALCULATETABLE e quello creato da CALCULATETABLE.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Dopo aver fatto clic su Conferma, possiamo vedere che stiamo riportando il valore corretto per ogni cella e che sia la versione 1 che la versione 2 stanno restituendo il valore corretto.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Allora come funziona? La tabella CALCULATE restituirà il livello Maintenance , quindi Rental , Service External e Spare parts . La creerà un'intersezione tra la manutenzione e quella tabella.

Rental creerà il contesto del filtro iniziale, quindi CALCULATETABLE restituirà tutti i valori della categoria Job. Quindi ci sarà un'intersezione tra Rental e la tabella restituita da CALCULATETABLE. Restituiremo solo le tabelle o le righe solo per quella parte di Noleggio.

Infine, quando inseriamo SUMMARIZE nel contesto del filtro, la funzione CALCULATE calcolerà le entrate solo per Rental. Lo stesso processo avviene per ogni riga.

Versione 3

Diamo un'occhiata a un altro modo di calcolare lo stesso calcolo usando il linguaggio DAX LuckyTemplates. Creiamo una copia della misura Versione 2 e creiamo un'altra misura. Chiameremo questa versione 3.

L'idea alla base di questo calcolo è che poiché stiamo calcolando le entrate utilizzando la funzione CALCULATE, non abbiamo bisogno di utilizzare la parte ADDCOLUMNS perché stiamo duplicando la stessa cosa all'interno e all'esterno di CALCULATE. Invece, possiamo semplicemente scrivere che il Revenue non dovrebbe essere uguale a 0.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Una volta cliccato su Conferma, dobbiamo assicurarci che il codice funzioni quindi trasciniamo la misura all'interno della matrice.

Puoi vedere che il codice restituisce effettivamente lo stesso valore per ogni cella.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Se provo a modificare il contesto del filtro modificando la data nell'affettatrice Data e selezionando un paio di valori da Nome cliente, puoi vedere che tutte e tre le misure restituiscono effettivamente lo stesso valore per ogni riga.

Esercitazione su LuckyTemplates del linguaggio DAX su TOPN inverso

Conclusione

In questo tutorial, abbiamo imparato come utilizzare una logica complessa per tornare indietro nel tempo dalla data di fine per identificare le prime tre date. Sulla base di questa tecnica LuckyTemplates del linguaggio DAX, siamo stati in grado di calcolare le entrate e mostrare solo i valori che esistono nel contesto del filtro. Questo è tutto per ora in questo tutorial.


Cosè il sé in Python: esempi del mondo reale

Cosè il sé in Python: esempi del mondo reale

Cos'è il sé in Python: esempi del mondo reale

Come salvare e caricare un file RDS in R

Come salvare e caricare un file RDS in R

Imparerai come salvare e caricare oggetti da un file .rds in R. Questo blog tratterà anche come importare oggetti da R a LuckyTemplates.

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

Rivisitazione dei primi N giorni lavorativi: una soluzione per il linguaggio di codifica DAX

In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Mostra approfondimenti utilizzando la tecnica di visualizzazione dinamica multi-thread in LuckyTemplates

Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.

Introduzione al filtraggio del contesto in LuckyTemplates

Introduzione al filtraggio del contesto in LuckyTemplates

In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

I migliori suggerimenti per lutilizzo delle app nel servizio online LuckyTemplates

Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Analizza le variazioni del margine di profitto nel tempo: analisi con LuckyTemplates e DAX

Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.

Idee di materializzazione per cache di dati in DAX Studio

Idee di materializzazione per cache di dati in DAX Studio

Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.

Reporting aziendale tramite LuckyTemplates

Reporting aziendale tramite LuckyTemplates

Se finora utilizzi ancora Excel, questo è il momento migliore per iniziare a utilizzare LuckyTemplates per le tue esigenze di reportistica aziendale.

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cosè il gateway LuckyTemplates? Tutto quello che devi sapere

Che cos'è il gateway LuckyTemplates? Tutto quello che devi sapere