Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
Azure Data Factory
Azure Synapse Analytics
Tipp
Data Factory in Microsoft Fabric ist die nächste Generation von Azure Data Factory mit einer einfacheren Architektur, integrierter KI und neuen Features. Wenn Sie mit der Datenintegration noch nicht vertraut sind, beginnen Sie mit Fabric Data Factory. Vorhandene ADF-Workloads können auf Fabric aktualisiert werden, um auf neue Funktionen in der Datenwissenschaft, Echtzeitanalysen und Berichterstellung zuzugreifen.
Datenflüsse sind sowohl in Azure Data Factory Pipelines als auch in Azure Synapse Analytics Pipelines verfügbar. Dieser Artikel gilt für Datenflusszuordnungen. Wenn Sie mit Transformationen noch nicht fertig sind, lesen Sie den einführungsartikel Transformieren von Daten mithilfe von Zuordnungsdatenflüssen.
Tipp
Die entsprechende Transformation (Spalte erweitern) in Dataflow Gen2 finden Sie in einer Anleitung zu Dataflow Gen2 zum Zuordnen von Datenflussbenutzern.
Verwenden Sie die Vereinfachungstransformation, um Arraywerte in hierarchischen Strukturen wie JSON auszuwählen und in einzelne Zeilen aufzulösen. Dieser Prozess wird als „Denormalisierung“ bezeichnet.
Konfiguration
Die Vereinfachungstransformation enthält die folgenden Konfigurationseinstellungen.
Auflösen
Wählen Sie ein Array aus, das aufgelöst werden soll. Die Ausgabedaten haben eine Zeile pro Element in jedem Array. Wenn das Array „Auflösen“ in der Eingabezeile NULL oder leer ist, wird eine einzelne Ausgabezeile mit als NULL aufgelösten Werten ausgegeben. Es können mehrere Arrays pro Vereinfachungstransformation aufgelöst werden. Wählen Sie die Plustaste (+) aus, um mehrere Arrays in eine einzelne Flatten-Transformation einzuschließen. Sie können hier ADF-Datenfluss-Metafunktionen nutzen, einschließlich name und type, und Mustererkennung nutzen, um Arrays, die diesen Kriterien entsprechen, aufzulösen. Wenn Sie mehrere Arrays in eine einzelne Flatten-Transformation einschließen, sind Ihre Ergebnisse ein kartesisches Produkt aller möglichen Arraywerte.
Stamm auflösen
Standardmäßig löst die Vereinfachungstransformation ein Array an den Anfang der Hierarchie auf, in der es sich befindet. Sie können optional ein Array als Unroll-Root auswählen. „Stamm auflösen“ muss ein Array komplexer Objekte sein, dass entweder das Array „Auflösen“ ist oder dieses Array enthält. Wenn „Stamm auflösen“ ausgewählt wird, enthalten die Ausgabedaten mindestens eine Zeile pro Element im aufgelösten Stamm. Wenn die Eingabezeile keine Elemente im Unroll-Stamm enthält, wird sie aus den Ausgabedaten gelöscht. Bei Auswahl von „Stamm auflösen“ wird immer eine Anzahl von Zeilen ausgegeben, die kleiner als das oder gleich dem Standardverhalten ist.
Vereinfachen der Zuordnung
Wählen Sie ähnlich wie bei der Auswahltransformation die Projektion der neuen Struktur aus eingehenden Feldern und dem denormalisierten Array aus. Wenn ein denormalisiertes Array zugeordnet ist, ist die Ausgabespalte derselbe Datentyp wie das Array. Wenn das Array „Auflösen“ ein Array komplexer Objekte ist, das Subarrays enthält, wird bei der Zuordnung eines Elements aus diesem Subarray ein Array ausgegeben.
Überprüfen Sie Ihre Mapping-Ergebnisse auf der Registerkarte „Inspect“ und in der Datenvorschau.
Regelbasierte Zuordnung
Die Vereinfachungstransformation unterstützt die regelbasierte Zuordnung, sodass Sie dynamische und flexible Transformationen erstellen können, die Arrays anhand von Regeln und Strukturen auf Basis von Hierarchieebenen vereinfachen.
Vergleichsbedingung
Geben Sie eine Musterabgleichsbedingung für die Spalte oder Spalten ein, die Sie unter Verwendung von exakten Übereinstimmungen oder Mustern abflachen möchten. Beispiel: like(name,'cust%')
Tiefer Spaltendurchlauf
Diese optionale Einstellung weist den Dienst an, alle Unterspalten eines komplexen Objekts einzeln zu verarbeiten, statt das komplexe Objekt als ganze Spalte zu behandeln.
Hierarchieebene
Wählen Sie die Hierarchieebene aus, die Sie erweitern möchten.
Namensübereinstimmungen (RegEx)
Optional können Sie auswählen, dass der Namensabgleich als regulärer Ausdruck in diesem Feld ausgedrückt wird statt die obige Vergleichsbedingung zu verwenden.
Beispiele
Sehen Sie sich das folgende JSON-Objekt für die nachstehenden Beispiele der Flattening-Transformation an.
{
"name":"MSFT","location":"Redmond", "satellites": ["Bay Area", "Shanghai"],
"goods": {
"trade":true, "customers":["government", "distributer", "retail"],
"orders":[
{"orderId":1,"orderTotal":123.34,"shipped":{"orderItems":[{"itemName":"Laptop","itemQty":20},{"itemName":"Charger","itemQty":2}]}},
{"orderId":2,"orderTotal":323.34,"shipped":{"orderItems":[{"itemName":"Mice","itemQty":2},{"itemName":"Keyboard","itemQty":1}]}}
]}}
{"name":"Company1","location":"Seattle", "satellites": ["New York"],
"goods":{"trade":false, "customers":["store1", "store2"],
"orders":[
{"orderId":4,"orderTotal":123.34,"shipped":{"orderItems":[{"itemName":"Laptop","itemQty":20},{"itemName":"Charger","itemQty":3}]}},
{"orderId":5,"orderTotal":343.24,"shipped":{"orderItems":[{"itemName":"Chair","itemQty":4},{"itemName":"Lamp","itemQty":2}]}}
]}}
{"name": "Company2", "location": "Bellevue",
"goods": {"trade": true, "customers":["Bank"], "orders": [{"orderId": 4, "orderTotal": 123.34}]}}
{"name": "Company3", "location": "Kirkland"}
Kein „Stamm auflösen“ bei Zeichenfolgenarray
| Auflösen | Stamm auflösen | Projektion |
|---|---|---|
| goods.customers | Keine | Name Kunde = goods.customer |
Ausgabe
{ 'MSFT', 'government'}
{ 'MSFT', 'distributer'}
{ 'MSFT', 'retail'}
{ 'Company1', 'store'}
{ 'Company1', 'store2'}
{ 'Company2', 'Bank'}
{ 'Company3', null}
Kein „Stamm auflösen“ bei komplexem Array
| Auflösen | Stamm auflösen | Projektion |
|---|---|---|
| goods.orders.shipped.orderItems | Keine | Name orderId = goods.orders.orderId itemName = goods.orders.shipped.orderItems.itemName itemQty = goods.orders.shipped.orderItems.itemQty location = location |
Ausgabe
{ 'MSFT', 1, 'Laptop', 20, 'Redmond'}
{ 'MSFT', 1, 'Charger', 2, 'Redmond'}
{ 'MSFT', 2, 'Mice', 2, 'Redmond'}
{ 'MSFT', 2, 'Keyboard', 1, 'Redmond'}
{ 'Company1', 4, 'Laptop', 20, 'Seattle'}
{ 'Company1', 4, 'Charger', 3, 'Seattle'}
{ 'Company1', 5, 'Chair', 4, 'Seattle'}
{ 'Company1', 5, 'Lamp', 2, 'Seattle'}
{ 'Company2', 4, null, null, 'Bellevue'}
{ 'Company3', null, null, null, 'Kirkland'}
Dasselbe Stammverzeichnis wie „Array auflösen“
| Auflösen | Stamm auflösen | Projektion |
|---|---|---|
| Warenbestellungen | Warenbestellungen | Name goods.orders.shipped.orderItems.itemName goods.customers Standort |
Ausgabe
{ 'MSFT', ['Laptop','Charger'], ['government','distributer','retail'], 'Redmond'}
{ 'MSFT', ['Mice', 'Keyboard'], ['government','distributer','retail'], 'Redmond'}
{ 'Company1', ['Laptop','Charger'], ['store', 'store2'], 'Seattle'}
{ 'Company1', ['Chair', 'Lamp'], ['store', 'store2'], 'Seattle'}
{ 'Company2', null, ['Bank'], 'Bellevue'}
„Stamm auflösen“ bei komplexem Array
| Auflösen | Stamm auflösen | Projektion |
|---|---|---|
| goods.orders.shipped.orderItem | Warenbestellungen | Name orderId = goods.orders.orderId itemName = goods.orders.shipped.orderItems.itemName itemQty = goods.orders.shipped.orderItems.itemQty location = location |
Ausgabe
{ 'MSFT', 1, 'Laptop', 20, 'Redmond'}
{ 'MSFT', 1, 'Charger', 2, 'Redmond'}
{ 'MSFT', 2, 'Mice', 2, 'Redmond'}
{ 'MSFT', 2, 'Keyboard', 1, 'Redmond'}
{ 'Company1', 4, 'Laptop', 20, 'Seattle'}
{ 'Company1', 4, 'Charger', 3, 'Seattle'}
{ 'Company1', 5, 'Chair', 4, 'Seattle'}
{ 'Company1', 5, 'Lamp', 2, 'Seattle'}
{ 'Company2', 4, null, null, 'Bellevue'}
Datenflussskript
Syntax
<incomingStream>
foldDown(unroll(<unroll cols>),
mapColumn(
name,
each(<array>(type == '<arrayDataType>')),
each(<array>, match(true())),
location
)) ~> <transformationName>
Beispiel
source foldDown(unroll(goods.orders.shipped.orderItems, goods.orders),
mapColumn(
name,
orderId = goods.orders.orderId,
itemName = goods.orders.shipped.orderItems.itemName,
itemQty = goods.orders.shipped.orderItems.itemQty,
location = location
),
skipDuplicateMapInputs: false,
skipDuplicateMapOutputs: false)
Zugehöriger Inhalt
- Verwenden Sie die Pivot-Transformation, um Zeilen in Spalten umzuwandeln.
- Verwenden Sie die Entpivotierungstransformation zum Pivotieren von Spalten in Zeilen.