Transformationsfunktionen in Power Query für Data Wrangling

GILT FÜR: Azure Data Factory Azure Synapse Analytics

Data Wrangling in Azure Data Factory ermöglicht codefreie agile Datenaufbereitung und Data Wrangling für die Cloud durch Übersetzen von Power Query M-Skripts in Datenflussskripts. ADF wird in Power Query Online integriert und stellt Power Query M-Funktionen für Data Wrangling über die Spark-Ausführung mithilfe der Datenfluss-Spark-Infrastruktur bereit.

Derzeit werden nicht alle Power Query M-Funktionen für Data Wrangling unterstützt, obwohl sie während der Erstellung verfügbar sind. Beim Erstellen Ihrer Mash-Ups wird die folgende Fehlermeldung angezeigt, wenn eine Funktion nicht unterstützt wird:

UserQuery : Expression.Error: The transformation logic is not supported as it requires dynamic access to rows of data, which cannot be scaled out.

Die unterstützten Power Query M-Funktionen sind im Folgenden aufgeführt.

Spaltenverwaltung

Zeilenfilterung

Verwenden Sie die M-Funktion Table.SelectRows, um Zeilen nach den folgenden Bedingungen zu filtern:

  • Gleichheit und Ungleichheit
  • Vergleiche von Zahlen, Text und Datumsangaben (jedoch nicht von Datum/Uhrzeit)
  • Zahlenangaben, z. B. Number.IsEven/Odd
  • Texteingrenzung unter Verwendung von Text.Contains, Text.StartsWith oder Text.EndsWith
  • Datumsbereiche einschließlich aller Datumsfunktionen mit „IsIn“)
  • Kombinationen dieser Bedingungen unter Verwendung der Bedingungen „and“, „or“ oder „not“

Hinzufügen und Transformieren von Spalten

Spalten lassen sich mit den folgenden M-Funktionen hinzufügen oder transformieren: Table.AddColumn, Table.TransformColumns, Table.ReplaceValue, Table.DuplicateColumn. Nachfolgend sind die unterstützten Transformationsfunktionen aufgeführt.

Zusammenführen und Verknüpfen von Tabellen

  • Power Query generiert eine geschachtelte Verknüpfung (Table.NestedJoin; Benutzer können auch manuell Table.AddJoinColumn schreiben). Benutzer müssen dann die geschachtelte Verknüpfungsspalte in eine nicht geschachtelten Verknüpfung erweitern (Table.ExpandTableColumn, wird in keinem anderen Kontext unterstützt).
  • Die M-Funktion Table.Join kann direkt geschrieben werden, um einen zusätzlichen Erweiterungsschritt zu vermeiden, der Benutzer muss jedoch sicherstellen, dass in den verknüpften Tabellen keine doppelten Spaltennamen vorhanden sind.
  • Unterstützte Verknüpfungsarten: Inner, LeftOuter, RightOuter, FullOuter
  • Value.Equals sowie Value.NullableEquals werden als Vergleichsfunktionen für Schlüsselgleichheit unterstützt.

Gruppieren nach

Verwenden Sie Table.Group, um Werte zu aggregieren.

Sortierung

Verwenden Sie Table.Sort, um Werte zu sortieren.

Verringern von Zeilen

„Erste Zeilen beibehalten“ und „Erste Zeilen entfernen“, „Zeilenbereich beibehalten“ (entsprechende M-Funktionen unterstützen nur die Anzahl und keine Bedingungen: Table.FirstN, Table.Skip, Table.RemoveFirstN, Table.Range, Table.MinN, Table.MaxN)

Bekannte nicht unterstützte Funktionen

Funktion Status
Table.PromoteHeaders Wird nicht unterstützt. Dasselbe Ergebnis kann erzielt werden, indem „Erste Zeile als Header verwenden“ im Dataset festgelegt wird.
Table.CombineColumns Dies ist ein gängiges Szenario, das nicht direkt unterstützt wird. Es kann jedoch durch Hinzufügen einer neuen Spalte umgesetzt werden, in der zwei angegebene Spalten verkettet sind. Beispiel: Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " " & [LastName])
Table.TransformColumnTypes Diese Funktion wird in den meisten Fällen unterstützt. Die folgenden Szenarien werden nicht unterstützt: Transformieren des Typs „string“ in „currency“, Transformieren des Typs „string“ in „time“, Transformieren des Typs „string“ in „Percentage“.
Table.NestedJoin Wenn Sie nur einen Join durchführen, führt dies zu einem Überprüfungsfehler. Die Spalten müssen erweitert werden, damit der Vorgang funktioniert.
Table.Distinct Das Entfernen doppelter Zeilen wird nicht unterstützt.
Table.RemoveLastN Das Entfernen der unteren Zeilen wird nicht unterstützt.
Table.RowCount Nicht unterstützt, kann jedoch durch Hinzufügen einer benutzerdefinierten Spalte mit dem Wert „1“ und anschließendes Aggregieren dieser Spalte mit „List.Sum“ erreicht werden. Table.Group wird unterstützt.
Fehlerbehandlung auf Zeilenebene Die Fehlerbehandlung auf Zeilenebene wird derzeit nicht unterstützt. Wenn Sie z. B. nicht numerische Werte aus einer Spalte herausfiltern möchten, können Sie u. a. die Textspalte in eine Zahl transformieren. Jede Zelle, die nicht transformiert werden kann, weist einen Fehlerstatus auf und muss gefiltert werden. Dieses Szenario ist bei M-Funktionen mit horizontaler Skalierung nicht möglich.
Table.Transpose Nicht unterstützt
Table.Pivot Nicht unterstützt
Table.SplitColumn Teilweise unterstützt

Problemumgehungen bei M-Skripts

SplitColumn

Eine Alternative für die Aufteilung nach Länge und Position ist unten aufgeführt

  • Table.AddColumn(Source, "First characters", each Text.Start([Email], 7), type text)
  • Table.AddColumn(#"Inserted first characters", "Text range", each Text.Middle([Email], 4, 9), type text)

Auf diese Option kann über die Option „Extrahieren“ auf dem Menüband zugegriffen werden.

Power Query: Spalte hinzufügen

Table.CombineColumns

  • Table.AddColumn(RemoveEmailColumn, "Name", each [FirstName] & " " & [LastName])

Pivots

  • Wählen Sie Pivot-Transformation aus dem PQ-Editor und wählen Sie Ihre Pivot-Spalte

Power Query Pivot Allgemein

  • Wählen Sie dann die Wertespalte und die Aggregatfunktion

Power Query Pivot-Selektor

  • Wenn Sie auf OK klicken, werden die Daten im Editor mit den gepivoteten Werten aktualisiert
  • Es wird auch eine Warnmeldung angezeigt, dass die Transformation möglicherweise nicht unterstützt wird
  • Um diese Warnung zu beheben, erweitern Sie die geschwenkte Liste manuell mit dem PQ-Editor
  • Wählen Sie in der Multifunktionsleiste die Option Erweiterter Editor
  • Erweitern Sie die Liste der geschwenkten Werte manuell
  • Ersetzen Sie List.Distinct() durch die Liste der Werte wie folgt:
#"Pivoted column" = Table.Pivot(Table.TransformColumnTypes(#"Changed column type 1", {{"genres", type text}}), {"Drama", "Horror", "Comedy", "Musical", "Documentary"}, "genres", "Rating", List.Average)
in
  #"Pivoted column"

Formatierung von Datum/Uhrzeit-Spalten

Um das Datums-/Zeitformat bei der Verwendung von Power Query ADF einzustellen, folgen Sie bitte diesen Anweisungen, um das Format einzustellen.

Power Query Typ ändern

  1. Markieren Sie die Spalte in der Power Query-Benutzeroberfläche und wählen Sie Typ ändern > Datum/Uhrzeit
  2. Es wird eine Warnmeldung angezeigt
  3. Öffnen Sie den erweiterten Editor und ändern Sie TransformColumnTypes in TransformColumns. Legen Sie das Format und die Kultur auf der Grundlage der Eingabedaten fest.

Power Query-Editor

#"Changed column type 1" = Table.TransformColumns(#"Duplicated column", {{"start - Copy", each DateTime.FromText(_, [Format = "yyyy-MM-dd HH:mm:ss", Culture = "en-us"]), type datetime}})

Nächste Schritte

Erfahren Sie, wie Sie eine Data Wrangling-Power Query in ADF erstellen.