# Power Query

Power Query ist ein von Microsoft entwickeltes Tool für den ETL-Prozess und wird verwendet, um Daten aus unterschiedlichen Quellen abzurufen, zu verarbeiten und in ein oder mehrere Zielsysteme zu laden. Power Query ist in verschiedenen Varianten innerhalb der Microsoft Power Platform verfügbar und wird für Business Intelligence auf vollständig oder teilweise selbstbedienten Plattformen eingesetzt. Es findet sich in Software wie Excel, Power BI, Analysis Services, Dataverse, Power Apps, Azure Data Factory, SSIS, Dynamics 365, und in Cloud-Diensten wie Microsoft Dataflows, einschließlich Power BI Dataflow, der mit dem Online Power BI Service verwendet wird, oder die etwas allgemeinere Version von Microsoft Dataflow, die mit Power Automate verwendet wird.
ETL steht in engem Zusammenhang mit der Datenmodellierung, und für diese Transformation kann Power Query verwendet werden, um ein logisches Datenmodell zu entwickeln, wenn noch keines besteht oder es weiterentwickelt werden muss.

## Geschichte

Power Query wurde in Excel 2010 und 2013 als zusätzliche Funktion in Power Pivot (z. B. zur Erstellung von Pivot-Tabellen) aufgenommen. In Excel 2016 wurde die Funktion für kurze Zeit in Get & Transform umbenannt, heißt aber seither wieder Power Query.

## M Programmiersprache

M ist eine von Microsoft als Teil des Oslo-Projekts entwickelte Programmiersprache zur Beschreibung von Datenmodellen, welche von Bill Gates erstmals in seiner Rede auf der TechEd 2008 (Juni 2008) erwähnt wurde.
Power Query basiert auf M, wobei es sich um eine Mashup-Sprache (daher der Buchstabe M) handelt, mit der Abfragen erstellt werden können, die Daten miteinander vermischen. Sie ähnelt der Programmiersprache F# und ist laut Microsoft eine „größtenteils reine, höherwertige, dynamisch typisierte, teilweise träge, funktionale Sprache“. Bei der Sprache M wird die Groß- und Kleinschreibung beachtet.
Ein Großteil der Benutzerinteraktion mit Power Query kann über Grafische Benutzeroberflächen mit Assistenten erfolgen, und dies kann für viele allgemeine oder grundlegende Aufgaben verwendet werden. Es ist auch möglich, den erweiterten Bearbeitungsmodus zu verwenden, in dem der Entwickler in der Formelsprache M schreiben kann; dieses bietet mehr Möglichkeiten und kann auch verwendet werden, um den von den grafischen Assistenten erzeugten Code zu ändern.

### Let function

Die Zeilen des let-Ausdrucks (die auch als Schritte bezeichnet werden) werden am Ende jeder Zeile durch ein Komma getrennt, mit Ausnahme der letzten Zeile. Kommentare werden im C-Stil geschrieben, wobei Inline-Kommentare mit einem Schrägstrich (/) beginnen, während Blockkommentare, die sich über mehrere Zeilen erstrecken können, durch /* und */ abgegrenzt werden. Die M-Sprache ist leistungsfähig und wird manchmal für bestimmte Abfragen benötigt. Für viele gängige Aufgaben können die Benutzer jedoch auch über die grafischen Benutzeroberflächen mit Power Query interagieren, ohne direkt mit der M-Sprache zu arbeiten.

### DirectQuery

In Power BI ist die Verwendung von M-Code in DirectQuery etwas eingeschränkt, im Gegensatz zu Import, das über alle Möglichkeiten verfügt. Dies ist darauf zurückzuführen, dass M-Code in DirectQuery zur Laufzeit in SQL übersetzt werden muss.

### Query Folding

Query Folding ist die Möglichkeit, eine Power Query in eine einzige Abfrage an der Datenquelle (z. B. in Transact SQL) umzuwandeln. Als solches funktioniert Query Folding wie ein herkömmlicher ETL-Prozess und ermöglicht die Bearbeitung der Daten vor dem Laden. Query Folding wird nicht immer unterstützt. Folding-Indikatoren (wie z. B. „folding“, „not folding“, „might fold“, „opaque“, „unknown“) können angeben, bis zu welchem Schritt eine Abfrage gefaltet werden kann. Abfragen, die nicht gefaltet werden, müssen auf der Client-Seite durchgeführt werden. Die Reihenfolge der Abfragen kann bestimmen, wie viele der Schritte, die gefaltet werden.