Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR:
Azure Data Factory
Azure Synapse Analytics
Tips
Data Factory i Microsoft Fabric är nästa generations Azure Data Factory, med en enklare arkitektur, inbyggd AI och nya funktioner. Om dataintegrering är nytt för dig börjar du med Fabric Data Factory. Befintliga ADF-arbetsbelastningar kan uppgraderas till Fabric för att få åtkomst till nya funktioner inom datavetenskap, realtidsanalys och rapportering.
Dataflöden är tillgängliga i både Azure Data Factory pipelines och Azure Synapse Analytics pipelines. Den här artikeln gäller för mappning av dataflöden. Om du inte har använt transformeringar tidigare läser du introduktionsartikeln Transformera data med hjälp av mappning av dataflöden.
Tips
För motsvarande transformering (expandera kolumn) i Dataflöde Gen2, se En guide till Dataflöde Gen2 för mappning av dataflödesanvändare.
Använd utjämningstransformation för att ta matrisvärden inuti hierarkiska strukturer som JSON och rulla ut dem till enskilda rader. Den här processen kallas avnormalisering.
Konfiguration
Utplattningstransformeringen innehåller följande konfigurationer.
Avregistrera dig genom
Välj en matris att avveckla. Utdata har en rad per objekt i varje matris. Om avregistreringen efter matris i indataraden är null eller tom finns det en utdatarad med oregistrerade värden som null. Du kan rulla ut fler än en matris per avplattningstransformering. Välj plusknappen (+) för att inkludera flera matriser i en enda utplattningstransformation. Du kan använda ADF-dataflödesmetafunktioner här, inklusive name och type och använda mönstermatchning för att avveckla matriser som matchar dessa villkor. När du inkluderar flera matriser i en enskild Platta-transformering är dina resultat en kartesisk produkt av alla möjliga matrisvärden.
Avveckla rot
Som standard rullar plattningstransformeringen ut en matris till den högsta nivån i hierarkin där den finns. Du kan valfritt välja en matris som din rot för avveckling. Avregistreringsroten måste vara en matris med komplexa objekt som antingen är eller innehåller avregistreringen per matris. Om en avregistreringsrot har valts innehåller utdata minst en rad per objekt i avregistreringsroten. Om indataraden inte har några objekt i utrullningsroten tas den bort från utdata. Om du väljer en uppackningsrot resulterar det alltid i ett lika med eller färre antal rader än standardbeteendets resultat.
Förenkla kartläggning
I likhet med den valda omvandlingen väljer du projektionen av den nya strukturen från inkommande fält och den avnormaliserade matrisen. Om en avnormaliserad matris mappas är utdatakolumnen samma datatyp som matrisen. Om utvecklingen av en array är en array med komplexa objekt som innehåller undermatriser, resulterar en mappning av ett objekt i den undermatrisen i en array.
Gå till fliken Inspektera och förhandsgranska data för att verifiera ditt mappningsresultat.
Regelbaserad mappning
Flatten-transformation stöder regelbaserad mappning som gör att du kan skapa dynamiska och flexibla transformationer som platta ut matriser baserat på regler och flatten-strukturer baserat på hierarkinivåer.
Matchande villkor
Ange ett mönstermatchningsvillkor för kolumnen eller kolumnerna som du vill platta ut med antingen exakt matchning eller mönster. Exempel: like(name,'cust%')
Djup kolumngenomsökning
Valfri inställning som instruerar tjänsten att hantera alla underkolumner för ett komplext objekt individuellt i stället för att hantera det komplexa objektet som en hel kolumn.
Hierarkinivå
Välj den nivå i hierarkin som du vill expandera.
Namnmatchningar (regex)
Du kan välja att uttrycka matchningen av ditt namn som ett reguljärt uttryck i den här rutan, i stället för att använda matchande villkor.
Exempel
Se följande JSON-objekt för nedanstående exempel på utplattad transformering
{
"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"}
Ingen avveckling av rot med strängarray
| Avregistrera dig genom | Avveckla rot | Projektion |
|---|---|---|
| varor.kunder | Ingen | Namn kund = varor.kund |
Utdata
{ 'MSFT', 'government'}
{ 'MSFT', 'distributer'}
{ 'MSFT', 'retail'}
{ 'Company1', 'store'}
{ 'Company1', 'store2'}
{ 'Company2', 'Bank'}
{ 'Company3', null}
Ingen utveckling av rot med komplex matris
| Avregistrera dig genom | Avveckla rot | Projektion |
|---|---|---|
| varor.beställningar.levererade.orderartiklar | Ingen | Namn orderId = goods.orders.orderId itemName = goods.orders.shipped.orderItems.itemName itemQty = goods.orders.shipped.orderItems.itemQty location = plats |
Utdata
{ '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'}
Samma rot som avveckla matris
| Avregistrera dig genom | Avveckla rot | Projektion |
|---|---|---|
| varor.beställningar | varor.beställningar | Namn varor.orders.skeppade.beställningsobjekt.objektnamn goods.customers plats |
Utdata
{ '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'}
Avveckla rot med komplex array
| Avregistrera dig genom | Avveckla rot | Projektion |
|---|---|---|
| varor.beställningar.skeppade.beställningsvara | varor.beställningar | Namn orderId = goods.orders.orderId itemName = goods.orders.shipped.orderItems.itemName itemQty = goods.orders.shipped.orderItems.itemQty location = plats |
Utdata
{ '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'}
Dataflödesskript
Syntax
<incomingStream>
foldDown(unroll(<unroll cols>),
mapColumn(
name,
each(<array>(type == '<arrayDataType>')),
each(<array>, match(true())),
location
)) ~> <transformationName>
Exempel
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)