Cosè il sé in Python: esempi del mondo reale
Cos'è il sé in Python: esempi del mondo reale
Ti mostrerò come aggiungere un parametro nella funzione M nella query della tabella delle date . Questo esempio si basa su una domanda che è stata sollevata sul . Puoi guardare il video completo di questo tutorial in fondo a questo blog.
La domanda riguardava come cambiare la numerazione del primo giorno della settimana da 0 a 1 . Si noti che questo non cambia l'inizio effettivo del giorno della settimana. In questa tabella di date, l'inizio della settimana sarà sempre il lunedì. Si tratta solo di riferirsi al lunedì come al giorno 1 anziché al giorno 0.
Questo processo non è necessariamente complesso, ma è necessaria una comprensione di base di come è strutturato il linguaggio M. Se sei un membro di LuckyTemplates, puoi dare un'occhiata al . L'introduzione tocca l'argomento.
Sommario
La funzione M e la tabella della data estesa
Permettetemi di iniziare andando in Power Query . Ho già copiato qui la funzione M della tabella delle date .
Ho ottenuto la funzione M dalla categoria M Code Showcase nel forum LuckyTemplates . Il codice si trova nell'argomento .
Se apro l' Advanced Editor , questo è il codice.
C'è un sacco di codice M lì dentro, che potrebbe distrarre.
Creazione di una query di prova
Poiché c'è troppo da fare all'interno della funzione M, inizierò invece con una nuova query vuota .
Chiamerò questa Query di prova .
Successivamente, aprirò l' Editor avanzato .
Poiché creerò una funzione, aggiungerò un paio di parentesi ed eliminerò tutto il codice predefinito.
Per avviare la funzione, dichiarerò un parametro opzionale .
Successivamente, aggiungerò una variabile. Chiamerò questa variabile WDStartNum poiché rappresenterà il numero di inizio del giorno della settimana. Devo anche dichiararne il tipo, quindi digiterò number .
Dichiaro il tipo per evitare errori. Se lo lascio come qualsiasi tipo, significa che potrebbe passare una tabella o un valore di data invece di passare solo numeri.
Il passaggio successivo consiste nell'aggiungere la clausola let e la clausola in .
Sotto la clausola let, ho bisogno di un nome di variabile. Quindi chiamerò questa variabile WDStart .
Ora, devo verificare se WDStartNum è stato superato. Se passa, non sarà uguale a null . Quindi dichiarerò che se WDStartNum non è uguale a null, voglio che venga restituito un valore .
Per quanto riguarda la clausola in, voglio che venga superato lo stesso passaggio. Quindi inserirò semplicemente WDStart lì, che è il modo in cui abbiamo chiamato la nostra variabile in precedenza sotto la clausola let.
Dopo aver premuto Fatto, la funzione verrà creata. Quindi proverò a passare un valore attraverso quella funzione.
Proverò a digitare la lettera "a".
Ricorda che prima ho dichiarato che il valore deve essere un numero. Poiché riconosce che il valore che ho inserito non soddisfa questo requisito, non mi consentirà di inserire quel parametro.
Quindi lo eliminerò e lascerò lo spazio vuoto.
Dopo aver fatto clic su Invoke, restituisce un valore pari a 0.
Tornando alla mia query originale, afferma che se il valore non è uguale a null, dovrebbe essere restituito WDStartNum. Se è uguale a null, dovrebbe essere restituito uno 0.
Quindi 0 è corretto.
Questa volta proverò a passare un valore modificando il numero in TestQuery. Abbastanza vero, restituisce un "1" una volta premuto invio.
Ora, fammi provare a superare il 2020 nel TestQuery. Una volta premuto invio, restituisce anche 2020.
Evidentemente, non voglio che questo accada. Dal momento che voglio un valore che rappresenti l'inizio della settimana, voglio che venga visualizzato uno 0 o un 1. Ciò significa che devo creare un altro test per vedere se il numero inserito è uno 0 o un 1. Posso usare la funzione List.Contains per questo.
Utilizzo di List.Contains
Ho creato una query vuota e ho inserito List.Contains senza utilizzare una parentesi.
Dopo aver premuto Invio, posso vedere la documentazione su quella funzione.
List.Contains indica se l'elenco contiene un valore.
Quindi richiede un elenco come primo parametro, quindi viene aggiunto un valore dopo. Se quel valore si trova all'interno dell'elenco, restituisce true. In caso contrario, restituirà false.
Apro di nuovo l' editor avanzato in modo da poter apportare le modifiche necessarie alla mia query.
Invece di verificare se un valore non è uguale a null, userò List.Contains .
Ora, fornirò un elenco di valori da applicare a questa funzione.
Userò le parentesi graffe come inizializzatore di elenco. All'interno di quelle parentesi graffe, inserirò 0, 1. Aggiungerò una virgola dopo aver chiuso quella parentesi.
Per il secondo parametro, userò WDStartNum. Quindi, aggiungerò la parentesi di chiusura.
Con questo in atto, significa che uno 0 o 1 dovrebbe darmi il WDStartNumber. Se viene inserito qualcosa di diverso da 0 o 1, dovrei ottenere un risultato di 0.
Fammi provare inserendo 2020 in TestQuery. Come previsto, questo restituisce uno "0" (zero).
Questo perché il valore 2020 non è nell'elenco.
Aggiunta del parametro nella funzione M
Ora che sono sicuro che il codice funziona, posso finalmente inserirlo nella tabella delle date effettive e nella funzione M. Aprirò l' editor avanzato , quindi copierò il file logic .
Quindi entrerò nella query della tabella delle date.
Aprirò la funzione M originale tramite l' editor avanzato .
Quindi, incollerò il mio codice lì dentro. Assicuriamoci che ci sia una virgola alla fine della riga.
Successivamente, evidenzierò e copio il nome del mio parametro .
Quindi aggiungerò quel parametro qui .
Si noti che devo prima aggiungere una virgola alla fine della riga esistente, quindi devo dichiarare questo parametro facoltativo . Quindi posso posizionare WDStartNum e aggiungere il tipo .
Ho aggiunto il parametro e ho anche incorporato la logica. Ma devo anche assicurarmi di ottenere i risultati attesi. Quindi cercherò la riga di codice che copre il giorno della settimana.
Quindi, aggiungerò + WDStart .
Farò clic su Fine per chiudere l'editor. Quindi, invocherò la query.
Per StartDate, inserirò il 1° gennaio 2020, quindi utilizzerò il 31 dicembre 2020 come EndDate.
Userò "7" come mese di inizio dell'anno fiscale, quindi inserirò "0" come WDStartNum.
Farò clic su Richiama. Ora ho la tabella delle date.
Lo rinominerò per assicurarmi che possa essere facilmente identificato.
Ora controllerò i risultati.
Questa è la mia rubrica DayOfWeek .
Mostra che lunedì è tornato come 0.
Tornando alla domanda nel Forum, ho bisogno di cambiare il numero dell'inizio della settimana a 1 invece di 0. Quindi lo cambierò solo nella misura.
Quando premo invio, lunedì sarà ora il giorno 1 anziché il giorno 0.
Guardando l'intervallo numerico, ora va da 1 a 7 invece che da 0 a 6.
Cosa succede se passo un valore nullo?
Quindi DayOfWeek per lunedì torna a 0.
Utilizzo della funzione M per creare una tabella della data di LuckyTemplates estesa
Guida per principianti al codice M in LuckyTemplates
Impostazione di una data di inizio e di una data di fine dinamiche per le tabelle della data di Power Query
Conclusione
Ecco come puoi aggiungere un parametro aggiuntivo direttamente nella funzione M sulla query della tabella delle date. Il processo non è affatto complesso, come ho detto prima. Finché hai una fonte per il codice M, è abbastanza facile da lì.
Ancora una volta, puoi sempre dare un'occhiata al corso Advanced Data Transformations & Modeling in Online se non hai informazioni su come funzionano i codici M.
Ti auguro il meglio,
Melissa
***** Imparare LuckyTemplates? *****
Cos'è il sé in Python: esempi del mondo reale
Imparerai come salvare e caricare oggetti da un file .rds in R. Questo blog tratterà anche come importare oggetti da R a LuckyTemplates.
In questa esercitazione sul linguaggio di codifica DAX, scopri come usare la funzione GENERATE e come modificare dinamicamente il titolo di una misura.
Questo tutorial illustrerà come utilizzare la tecnica di visualizzazione dinamica multi-thread per creare approfondimenti dalle visualizzazioni di dati dinamici nei report.
In questo articolo, esaminerò il contesto del filtro. Il contesto del filtro è uno degli argomenti principali che qualsiasi utente di LuckyTemplates dovrebbe inizialmente conoscere.
Voglio mostrare come il servizio online di LuckyTemplates Apps può aiutare nella gestione di diversi report e approfondimenti generati da varie fonti.
Scopri come elaborare le modifiche al margine di profitto utilizzando tecniche come la ramificazione delle misure e la combinazione di formule DAX in LuckyTemplates.
Questo tutorial discuterà delle idee di materializzazione delle cache di dati e di come influiscono sulle prestazioni dei DAX nel fornire risultati.
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