# Power Query

Power Query è uno strumento ETL creato da Microsoft per l'estrazione, il caricamento e la trasformazione di dati: viene utilizzato per recuperare i dati dalle origini, elaborarli e caricarli in uno o più sistemi di destinazione. Power Query è disponibile in diverse varianti all'interno di Microsoft Power Platform, e viene utilizzato per la business intelligence su piattaforme completamente o parzialmente self-service. È presente in software come Excel, Power BI, Analysis Services, Dataverse, Power Apps, Azure Data Factory, SSIS, Dynamics 365 e nei servizi cloud come Microsoft Dataflows, incluso Power BI Dataflow utilizzato con il servizio Power BI online o la versione leggermente più generica di Microsoft Dataflow utilizzata con Power Automate .
ETL è strettamente correlato alla modellazione dei dati. Power Query può essere utilizzato per sviluppare un modello di dati logico qualora i dati non ne abbiano già uno o laddove sia necessario svilupparlo ulteriormente.

## Storia

Power Query è stato incluso come funzionalità aggiuntiva in Power Pivot (utilizzato per creare tabelle pivot da un modello di dati) in Excel 2010 e 2013. In Excel 2016 la funzione è stata rinominata Recupera e trasforma per un breve periodo, ma in seguito è stata rinominata con l'odierno Power Query.

## Linguaggio M

Power Query si basa su ciò che era al tempo un nuovo linguaggio di query chiamato M. È un linguaggio mashup (da qui la lettera M) progettato per creare query che combinano dati. È simile al linguaggio di programmazione F Sharp e, secondo Microsoft, è un "linguaggio per lo più puro, di ordine superiore, tipizzato dinamicamente e funzionale". Il linguaggio M fa distinzione tra maiuscole e minuscole.
Gran parte dell'interazione dell'utente con Power Query può essere eseguita tramite interfacce utente grafiche con procedure guidate e può essere utilizzata per molte attività comuni o di base. È anche possibile utilizzare la modalità di modifica avanzata in cui lo sviluppatore può scrivere direttamente nel linguaggio M, conferendo maggiori possibilità di esecuzione.

### La funzione Let

Una formula Power Query inizia con la funzione let in cui è possibile fare riferimento a dati ed espressioni tra loro e da un'espressione in che contiene l'output. Le righe nell'espressione let (dette passaggi) sono separate da una virgola alla fine di ciascuna riga, ad eccezione dell'ultima. I commenti sono scritti in stile C, con i commenti in linea che iniziano con un simbolo di barra ( / ), mentre i commenti di blocco che possono estendersi su più righe sono delimitati da /* e */. Il linguaggio M è potente ed è talvolta necessario per eseguire determinate forme di query, tuttavia per molte attività comuni gli utenti possono spesso interagire con Power Query tramite le interfacce utente grafiche senza lavorare direttamente con il linguaggio M.

### DirectQuery

In ambiente Power BI l'uso del codice M per è piuttosto limitato nella modalità DirectQuery, al contrario di quella Import che mantiene tutte le funzionalità. Ciò è dovuto al requisito che il codice M in DirectQuery deve essere tradotto in SQL in fase di esecuzione.

### Query Folding

Query Folding è la capacità di trasformare una formula Power Query in una singola query nell'origine dati (ad esempio in Transact SQL). Pertanto, Query Folding funziona come un processo ETL tradizionale e consente di lavorare sui dati prima del caricamento. Questa modalità non è sempre supportata. Gli indicatori folding potrebbero indicare fino a quale passaggio una query potrebbe puntare. Le query non-folding dovranno essere eseguite sul lato client. L'ordine delle query può determinare quanti passaggi siano necessari.