Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Vonatkozik:
Azure Data Factory
Azure Synapse Analytics
Tipp.
Az adatfolyamok Azure Data Factory folyamatokban és Azure Synapse Analytics folyamatokban is elérhetők. Ez a cikk az adatfolyamok leképezésére vonatkozik. Ha még nem ismerkedik az átalakításokkal, tekintse meg az Adatok átalakítása leképezési adatfolyamokkal című bevezető cikket.
Tipp.
A 2. generációs adatfolyam egyenértékű átalakításával (oszlop kibontásával) kapcsolatban tekintse meg az Adatfolyam Gen2-nek az adatfolyam felhasználóinak leképezésére vonatkozó útmutatóját.
A flatten transzformáció használatával a hierarchikus struktúrákban, például a JSON-ban lévő tömbértékeket egyes sorokká lehet széthúzni. Ezt a folyamatot denormalizálásnak nevezzük.
Konfiguráció
A flattenelés átalakítás a következő konfigurációs beállításokat tartalmazza.
Regisztráció törlése a következő szerint:
Válasszon ki egy tömböt a kibontáshoz. A kimeneti adatok minden tömbben elemenként egy sort tartalmaznak. Ha a bemeneti sor tömb szerinti kibontása null vagy üres, akkor van egy kimeneti sor, amelyben a kibontott értékek null értékűek. Lapítási transzformációnként több tömböt is kibonthat. A plusz (+) gombra kattintva több tömböt is belefoglalhat egyetlen simított átalakításba. Az ADF-adatfolyam metafüggvényeit itt használhatja, beleértve a name és type elemeket is, és mintaillesztést használhat az ezeknek a feltételeknek megfelelő tömbök kibontására. Ha több tömböt is beleszámít egyetlen lapított transzformációba, az eredmények az összes lehetséges tömbérték cartesian-szorzatai.
Gyökér kibontása
Az elsimított átalakítás alapértelmezés szerint fel nem írja a tömböt annak a hierarchiának a tetejére, amelyben létezik. Választhatóan kiválaszthat egy tömböt kibontási gyökérként. A kibontási gyökérnek olyan összetett objektumok tömbjének kell lennie, amelyek maguk a kibontás szerint vannak, vagy tartalmazzák a kibontás szerinti tömböt. Ha egy kibontási gyökér van kiválasztva, a kimeneti adatok gyökérelemenként legalább egy sort tartalmaznak. Ha a bemeneti sor nem tartalmaz elemeket az unroll root területén, a program kihagyja a kimeneti adatokból. Egy kihajtási gyökér kiválasztása mindig kisebb vagy egyenlő számú sort eredményez, mint az alapértelmezett viselkedés.
Lesimított leképezés
A kiválasztási átalakításhoz hasonlóan válassza ki az új struktúra vetületét a bejövő mezőkből és a denormalizált tömbből. Ha denormalizált tömb van megfeleltetve, a kimeneti oszlop ugyanaz az adattípus, mint a tömb. Ha a tömb szerinti kibontás összetett objektumokból álló tömb, amely alárredéseket tartalmaz, a részhalmaz egy elemének leképezése tömböt eredményez.
A leképezési kimenet ellenőrzéséhez tekintse meg a vizsgálat lapot és az adatok előnézetét.
Szabályalapú leképezés
Az összesimított átalakítás támogatja a szabályalapú leképezést, így dinamikus és rugalmas átalakításokat hozhat létre, amelyek szabályokon alapuló tömböket és hierarchiaszinteken alapuló szerkezeteket simítanak.
Egyező feltétel
Adjon meg egy mintaegyeztetési feltételt azoknak az oszlopoknak vagy oszlopoknak, amelyeket pontos egyezéssel vagy mintákkal szeretne ellaposítani. Példa: like(name,'cust%')
Mélyoszlop bejárása
Nem kötelező beállítás, amely arra utasítja a szolgáltatást, hogy az összetett objektum összes almappáját önállóan kezelje ahelyett, hogy az összetett objektumot egész oszlopként kezelne.
Hierarchiaszint
Válassza ki a kibontani kívánt hierarchia szintjét.
Név egyezések (regex)
Ha szeretné, a névegyezést normál kifejezésként is kifejezheti ebben a mezőben a megfelelő feltétel használata helyett.
Példák
A lapított átalakítás alábbi példáiért tekintse meg a következő JSON-objektumot
{
"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"}
Nincs szétbontás a sztringtömb tartalmazó gyökér esetében.
| Regisztráció törlése a következő szerint: | Gyökér kibontása | Vetület |
|---|---|---|
| goods.customers | Egyik sem | név ügyfél = áruk.ügyfél |
Kimenet
{ 'MSFT', 'government'}
{ 'MSFT', 'distributer'}
{ 'MSFT', 'retail'}
{ 'Company1', 'store'}
{ 'Company1', 'store2'}
{ 'Company2', 'Bank'}
{ 'Company3', null}
Nincs gyökér kibontása összetett tömbbel
| Regisztráció törlése a következő szerint: | Gyökér kibontása | Vetület |
|---|---|---|
| goods.orders.shipped.orderItems | Egyik sem | név orderId = goods.orders.orderId (Translation is not applied here as it is unnecessary and potentially harmful to alter code or variable names like these in a technical document.) itemMennyiség = goods.orders.shipped.orderItems.itemMennyiség location = helyszín |
Kimenet
{ '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'}
Ugyanaz a gyökér, mint a tömb kicsomagolása.
| Regisztráció törlése a következő szerint: | Gyökér kibontása | Vetület |
|---|---|---|
| áru.rendelések | áru.rendelések | név goods.orders.shipped.orderItems.itemName árucikkek.vásárlók hely |
Kimenet
{ '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'}
Gyökér kicsomagolása összetett tömbbel
| Regisztráció törlése a következő szerint: | Gyökér kibontása | Vetület |
|---|---|---|
| áruk.rendelések.kiszállítva.rendelésiTétel | áru.rendelések | név orderId = goods.orders.orderId (Translation is not applied here as it is unnecessary and potentially harmful to alter code or variable names like these in a technical document.) itemMennyiség = goods.orders.shipped.orderItems.itemMennyiség location = helyszín |
Kimenet
{ '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'}
Adatfolyamszkript
Szintaxis
<incomingStream>
foldDown(unroll(<unroll cols>),
mapColumn(
name,
each(<array>(type == '<arrayDataType>')),
each(<array>, match(true())),
location
)) ~> <transformationName>
Példa
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)
Kapcsolódó tartalom
- A Pivot átalakítás használatával sorokat alakíthat oszlopokká.
- Az Unpivot transzformációval átalakíthat oszlopadatokat sorokká.