M è il potente linguaggio dietro la scena di Power Query. Qualsiasi trasformazione che applichi sarà scritta nel linguaggio M. Per molti, M sembra un linguaggio spaventoso. In questo post mi piace spiegare un po’ di basi di M. Senza menzionare alcuna funzione. Principalmente voglio spiegarvi come è strutturata la sintassi del linguaggio M. Una volta che conoscete la sintassi, allora tutto diventa semplice. M è un linguaggio che si può imparare facilmente. Come sviluppatore di Power Query, ti consiglio vivamente di passare del tempo su M, perché ci sono MOLTE operazioni che puoi fare con M, ma che potresti non essere in grado di fare semplicemente con l’interfaccia grafica. Se vuoi saperne di più su Power BI, leggi il libro Power BI dal principiante alla rock star.

M è il nome informale di Power Query Formula Language. Il nome formale è così lungo che nessuno lo usa, tutti lo chiamano M! M sta per Data Mashup, alcuni dicono che sta per Data Modeling. M è un linguaggio funzionale, ed è importante conoscerne le funzioni. Tuttavia, ogni linguaggio ha una struttura e una sintassi che è il livello principiante dell’apprendimento di quel linguaggio. In questo post, spiegherò la sintassi di M. Prima di imparare M, vorrei che leggeste questa frase ad alta voce;

M è molto più potente dell’interfaccia grafica di Power Query

Sì, avete letto bene! L’interfaccia grafica di Power Query cambia ogni mese. Ogni mese arrivano nuove funzionalità a questa interfaccia grafica. Ma il fatto è che tutte queste funzionalità sono state nel linguaggio per molti anni! Se si conosce il linguaggio, si potrebbe facilmente usarle, invece di aspettare l’opzione dell’interfaccia grafica. Un esempio molto piccolo è qui: puoi estendere la tua capacità di raggruppamento in Power Query con un cambiamento molto piccolo nello script M.

Sintassi di M

La sintassi di questo linguaggio è semplice. ha sempre due blocchi di programmazione: Blocco di espressione LET e blocco di espressione IN. Ecco la sintassi più semplice di M;

let x=1in x

let e in sono parole riservate. prima di andare anche solo un passo oltre, la prima e più importante cosa che dovete sapere;

M (Power Query Formula Language) è Case Sensitive. C’è una differenza tra x e X.

che cosa sono questi due blocchi di programmazione:

let: definizione di tutte le variabili

in: output! Sì, in in realtà significa out! solo chiamato come in. tutto ciò che metti in questo blocco sarà l’output della tua query.

Quindi, fondamentalmente, la query qui sotto significa definire una variabile chiamata x, assegnarle il valore 1, e mostrarla come set di risultati. quindi la query restituirà 1.

per eseguire questo esempio, è necessario aprire Power BI Desktop. Vai su Get Data, inizia con New Blank Query.

poi nella scheda View, seleziona Advanced Editor;

Assicurati quando scrivi lo script di mettere parole riservate come let e in tutte le minuscole. anche il tuo nome variabile dovrebbe essere lo stesso caso sia in let che in section.

Come puoi vedere, non c’è bisogno di definire tipi di dati per la variabile. Sarà assegnata automaticamente quando avviene il primo assegnamento.

Se specificate un valore di testo, allora la variabile sarà automaticamente un tipo di dati di testo.

Fine linea

Le linee di codice in M continuano se non mettete il carattere di fine linea.

Come potete vedere nell’esempio precedente, la linea continua, e x sarà uguale a x=1+1 . Se volete mettere una fine per una linea usate la virgola(,). esempio qui:

ogni linea ha bisogno di una virgola(,) per finire. tranne l’ultima linea prima di in.

Nomi delle variabili

I nomi delle variabili possono essere tutte una parola, come Source. Nel caso in cui ci siano alcuni caratteri come lo spazio, allora è necessario mettere il nome tra virgolette doppie (“) e mettere un hashtag all’inizio di esso (#). qualcosa di simile a:

#"This is a variable name"

Il nome della variabile può contenere caratteri speciali, ecco un esempio:

Caratteri speciali

I nomi delle variabili possono avere caratteri speciali, come potete vedere sotto la variabile ha tutti i tipi di caratteri e funziona ancora bene.

Carattere di escape

Il doppio apice (“) è il carattere di escape. puoi usarlo per definire variabili con nomi che hanno un altro doppio apice. Ecco un esempio:

Il primo doppio apice (evidenziato) sopra è necessario che sia prima del secondo doppio apice (che fa parte del nome della variabile).

Codifica passo passo

Power Query è una trasformazione passo passo. Ogni trasformazione di solito avviene in un passo. Mentre scrivi il codice, puoi anche notare che nella parte destra, vedrai che ogni variabile forma un passo.

Nello screenshot sopra, puoi vedere che ogni variabile è determinata come un passo. e se la variabile ha uno spazio nel nome, la mostrerà con spazi nella lista dei passi applicati.

L’ultima variabile è sempre specificata nella sezione in.

Letterali

Ci sono diversi modi di definire ogni letterale in Power Query. Per esempio, se volete definire una variabile data, ecco come farlo;

per definire tutti gli altri tipi di letterali, ecco la tabella di riferimento da usare:

* per funzione e tipo; scriverò un altro post più tardi per spiegare come funzionano questi tipi.

Chiamata di funzione

M è un linguaggio funzionale, e per fare quasi tutto è necessario chiamare una funzione. Le funzioni possono essere chiamate facilmente con il nome della funzione e specificando i parametri per essa.

screenshot sopra usa la funzione Date.Year che recupera la parte di anno di una data. I nomi delle funzioni iniziano sempre con lettere maiuscole: Date.Year()

come ogni linguaggio di programmazione, potete mettere dei commenti nel vostro codice. Può essere in due forme;

Commento su una sola linea con doppia barra (//)

Commento su più linee tra barra e inizio (/* commenti */)

Un esempio del mondo reale

Ora che conosci le basi, guardiamo una query esistente in modalità editor avanzato e capiamola.

Nello screenshot qui sopra, potete vedere tutte le basi menzionate finora:

  1. in blocco
  2. nomi delle variabili che corrispondono ai passi applicati nella query
  3. alcuni nomi di variabili con hashtag e doppie citazioni: #”var name”
  4. caratteri di fine linea: virgola
  5. chiamando molte funzioni

Ci sono ancora molte parti di questa query che potreste non capire. specialmente quando si usano le funzioni. è necessario imparare cosa fanno le funzioni per capire il codice completamente. Ho scritto un post sul blog, che spiega come usare la parola chiave #shared per ottenere la documentazione di tutte le funzioni in Power Query.

Nei prossimi post, spiegherò altri livelli di strutture in M.

Trainer, Consulente, Mentore
Reza Rad è un direttore regionale Microsoft, un autore, formatore, oratore e consulente. Ha una laurea in ingegneria informatica; ha più di 20 anni di esperienza nell’analisi dei dati, BI, database, programmazione e sviluppo soprattutto su tecnologie Microsoft. È un Microsoft Data Platform MVP per nove anni consecutivi (dal 2011 ad oggi) per la sua dedizione nella Microsoft BI. Reza è un blogger attivo e co-fondatore di RADACAD. Reza è anche co-fondatore e co-organizzatore della conferenza Difinity in Nuova Zelanda.
I suoi articoli su diversi aspetti delle tecnologie, specialmente su MS BI, si possono trovare sul suo blog: https://radacad.com/blog.
Ha scritto alcuni libri su MS SQL BI e ne sta scrivendo altri, è stato anche un membro attivo nei forum tecnici online come MSDN e Experts-Exchange, ed è stato un moderatore dei forum MSDN SQL Server, ed è un MCP, MCSE e MCITP di BI. È il leader del gruppo di utenti di Business Intelligence della Nuova Zelanda. È anche l’autore del libro molto popolare Power BI from Rookie to Rock Star, che è gratuito con più di 1700 pagine di contenuto e Power BI Pro Architecture pubblicato da Apress.
È un oratore internazionale in Microsoft Ignite, Microsoft Business Applications Summit, Data Insight Summit, PASS Summit, SQL Saturday e SQL user groups. Ed è un Microsoft Certified Trainer.
La passione di Reza è quella di aiutarvi a trovare la migliore soluzione di dati, è un appassionato di dati.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.