Transformationsfunktionen in Power Query für Data Wrangling
GILT FÜR: Azure Data Factory Azure Synapse Analytics
Tipp
Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!
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
- Auswahl: Table.SelectColumns
- Entfernung: Table.RemoveColumns
- Umbenennung: Table.RenameColumns, Table.PrefixColumns, Table.TransformColumnNames
- Neuanordnung: Table.ReorderColumns
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.
- Numerische Arithmetik
- Textverkettung
- Arithmetik für Datum und Uhrzeit (arithmetische Operatoren Date.AddDays, Date.AddMonths, Date.AddQuarters, Date.AddWeeks, Date.AddYears)
- Dauern können für die Arithmetik für Datum und Uhrzeit verwendet werden, müssen jedoch vor dem Schreiben in eine Senke in einen anderen Typ transformiert werden (arithmetische Operatoren #duration, Duration.Days, Duration.Hours, Duration.Minutes, Duration.Seconds, Duration.TotalDays, Duration.TotalHours, Duration.TotalMinutes, Duration.TotalSeconds)
- Großteil der standardmäßigen, wissenschaftlichen und trigonometrischen numerischen Funktionen (alle Funktionen unter Vorgänge, Rundung und Trigonometrie, mit Ausnahme von Number.Factorial, Number.Permutations und Number.Combinations)
- Ersetzung (Replacer.ReplaceText, Replacer.ReplaceValue, Text.Replace, Text.Remove)
- Textextraktion in Bezug auf die Position (Text.PositionOf, Text.Length, Text.Start, Text.End, Text.Middle, Text.ReplaceRange, Text.RemoveRange)
- Grundlegende Textformatierung (Text.Lower, Text.Upper, Text.Trim/Start/End, Text.PadStart/End, Text.Reverse)
- Datum/Uhrzeit-Funktionen (Date.Day, Date.Month, Date.YearTime.Hour, Time.Minute, Time.Second, Date.DayOfWeek, Date.DayOfYear, Date.DaysInMonth)
- If-Ausdrücke (Verzweigungen müssen jedoch übereinstimmende Typen aufweisen)
- Zeilenfilter als logische Spalte
- number-, text-, logical-, date- und datetime-Konstanten
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.
- Muss mit einer Aggregationsfunktion verwendet werden.
- Unterstützte Aggregationsfunktionen: List.Sum, List.Count, List.Average, List.Min, List.Max, List.StandardDeviation, List.First, List.Last
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“ und Transformieren mit Gebietsschema. |
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.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 |
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.
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
- Wählen Sie dann die Wertespalte und die Aggregatfunktion
- Wenn Sie auf „OK“ klicken, werden die Daten im Editor mit den pivotierten 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.
- Markieren Sie die Spalte auf der Power Query-Benutzeroberfläche, und wählen Sie „Typ ändern“ > „Datum/Uhrzeit“ aus.
- Es wird eine Warnmeldung angezeigt
- Öffnen Sie den erweiterten Editor und ändern Sie
TransformColumnTypes
inTransformColumns
. Legen Sie das Format und die Kultur auf der Grundlage der Eingabedaten fest.
#"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}})
Zugehöriger Inhalt
Erfahren Sie, wie Sie eine Data Wrangling-Power Query in ADF erstellen.