Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Azure Data Factory
Azure Synapse Analytics
Tip
Data Factory in Microsoft Fabric is de volgende generatie van Azure Data Factory, met een eenvoudigere architectuur, ingebouwde AI en nieuwe functies. Als u nieuw bent in gegevensintegratie, begint u met Fabric Data Factory. Bestaande ADF-workloads kunnen upgraden naar Fabric om toegang te krijgen tot nieuwe mogelijkheden voor gegevenswetenschap, realtime analyses en rapportage.
Gegevensstromen zijn beschikbaar in zowel Azure Data Factory pijplijnen als Azure Synapse Analytics pijplijnen. Dit artikel is van toepassing op gegevensverwerkingsstromen. Als u nieuw bent met transformaties, raadpleegt u het inleidende artikel Gegevens transformeren met behulp van mapping-dataflows.
Tip
Zie voor de equivalente transformatie (Kolom Uitvouwen) in Dataflow Gen2 Een handleiding voor Gegevensstroom Gen2 voor het toewijzen van gegevensstroomgebruikers.
Gebruik de platgemaakte transformatie om matrixwaarden in hiërarchische structuren zoals JSON te nemen en ze uit te schrijven in afzonderlijke rijen. Dit proces wordt denormalisatie genoemd.
Configuratie
De platgemaakte transformatie bevat de volgende configuratie-instellingen.
Uitrollen door
Selecteer een array die u wilt uitschrijven. De uitvoergegevens hebben één rij per item in elke matrix. Als de ontrollen door matrix in de invoerrij null of leeg is, is er één uitvoerrij met ontrollen waarden als null. U kunt meer dan één array uitvouwen per Flatten-transformatie. Selecteer de plusknop (+) om meerdere matrices op te nemen in één platte transformatie. U kunt hier meta-functies voor ADF-gegevensstromen gebruiken, inclusief name en type, en patroonmatching gebruiken om arrays uit te rollen die aan deze criteria voldoen. Wanneer u meerdere matrices in één platte transformatie optelt, zijn uw resultaten een cartesisch product van alle mogelijke matrixwaarden.
Root uitvouwen
Standaard rolt de afvlakte transformatie een array uit naar de bovenkant van de hiërarchie waarin het zich bevindt. U kunt desgewenst een matrix selecteren als uw ontvouwwortel. De unroll root moet een array zijn van complexe objecten die ofwel zelf de unroll door array is, of deze bevat. Als er een uitvouwhoofdelement is geselecteerd, bevatten de uitvoergegevens ten minste één rij per item. Als de invoerrij geen items in de hoofdmotor voor uitvouwen bevat, wordt deze verwijderd uit de uitvoergegevens. Bij het kiezen van een unroll-root wordt altijd een kleiner dan of gelijk aantal rijen geproduceerd dan bij het standaardgedrag.
Platgemaakte toewijzing
Net als bij de selectietransformatie kiest u de projectie van de nieuwe structuur uit binnenkomende velden en de gedenormaliseerde matrix. Als een gedenormaliseerde array is gemapt, is de uitvoerkolom van hetzelfde datatype als de array. Als het uitvouwen op basis van een array een array is van complexe objecten die subarrays bevat, zorgt het toewijzen van een item van die subarray voor een array.
Raadpleeg het tabblad Inspecteren en het gegevensvoorbeeld om uw toewijzingsuitvoer te controleren.
toewijzing op basis van regels
De platte transformatie ondersteunt toewijzing op basis van regels, zodat u dynamische en flexibele transformaties kunt maken waarmee matrices worden afgevlakt op basis van regels en platte structuren op basis van hiërarchieniveaus.
Overeenkomende voorwaarde
Voer een patroonkoppelingsvoorwaarde in voor de kolom of kolommen die u wilt platmaken met behulp van exacte overeenkomsten of patronen. Voorbeeld: like(name,'cust%')
Doorlopen van diepe kolommen
Optionele instelling waarmee de service alle subkolommen van een complex object afzonderlijk moet verwerken in plaats van het complexe object als een hele kolom te verwerken.
Hiërarchieniveau
Kies het niveau van de hiërarchie dat u wilt uitbreiden.
Naamovereenkomsten (regex)
U kunt ervoor kiezen om uw naamvergelijking als een reguliere expressie in dit vak te uitdrukken, in plaats van de overeenkomende voorwaarde te gebruiken.
Voorbeelden
Raadpleeg het volgende JSON-object voor de onderstaande voorbeelden van de platte transformatie
{
"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"}
Geen unroll van rootmap met tekenreeks array
| Uitrollen door | Root uitvouwen | Projectie |
|---|---|---|
| goederen.klanten | Geen | naam klant = goods.customer |
Uitvoer
{ 'MSFT', 'government'}
{ 'MSFT', 'distributer'}
{ 'MSFT', 'retail'}
{ 'Company1', 'store'}
{ 'Company1', 'store2'}
{ 'Company2', 'Bank'}
{ 'Company3', null}
Geen uitrollen van root met complexe array
| Uitrollen door | Root uitvouwen | Projectie |
|---|---|---|
| goederen.bestellingen.verzonden.bestelartikelen | Geen | naam orderId = goods.orders.orderId itemName = goods.orders.shipped.orderItems.itemName itemQty = goods.orders.shipped.orderItems.itemQty location = locatie |
Uitvoer
{ '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'}
Dezelfde wortel als het uitrollen van array
| Uitrollen door | Root uitvouwen | Projectie |
|---|---|---|
| goederen.bestellingen | goederen.bestellingen | naam goods.orders.shipped.orderItems.itemName goods.customers locatie |
Uitvoer
{ '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'}
De wortel uitvouwen met complexe array
| Uitrollen door | Root uitvouwen | Projectie |
|---|---|---|
| goederen.bestellingen.verzonden.bestellingItem | goederen.bestellingen | naam orderId = goods.orders.orderId itemNaam = goederen.bestellingen.verzonden.bestelItems.itemNaam itemQty = goods.orders.shipped.orderItems.itemQty location = locatie |
Uitvoer
{ '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'}
Script voor gegevensstroom
Syntaxis
<incomingStream>
foldDown(unroll(<unroll cols>),
mapColumn(
name,
each(<array>(type == '<arrayDataType>')),
each(<array>, match(true())),
location
)) ~> <transformationName>
Voorbeeld
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)
Gerelateerde inhoud
- Gebruik de draaitransformatie om rijen naar kolommen te draaien.
- Gebruik de Unpivot-transformatie om kolommen naar rijen te transformeren.