Az átalakítás simítása a leképezési adatfolyamban

A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics

Tipp.

Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!

Az adatfolyamok az Azure Data Factoryben és az Azure Synapse Pipelinesban is elérhetők. Ez a cikk az adatfolyamok leképezésére vonatkozik. Ha még nem használta az átalakításokat, tekintse meg az adatok leképezési adatfolyam használatával történő átalakításáról szóló bevezető cikket.

Az összesimított átalakítás használatával tömbértékeket vehet fel hierarchikus struktúrákba, például JSON-ba, és egyes sorokba rendezhet. Ezt a folyamatot denormalizálásnak nevezzük.

Konfiguráció

Az összesimított átalakítás a következő konfigurációs beállításokat tartalmazza.

Screenshot that shows flatten settings.

Regisztráció törlése a következő szerint:

Válasszon ki egy tömböt a regisztráció törléséhez. A kimeneti adatok minden tömbben elemenként egy sorral rendelkeznek. Ha a bemeneti sor tömbönkénti regisztrációjának törlése null vagy üres, akkor egy kimeneti sor lesz null értékként nem iktatott értékekkel. A lapított átalakításonként több tömb regisztrációjának törlésére is lehetősége van. A plusz (+) gombra kattintva több tömböt is belefoglalhat egyetlen simított átalakításba. Az ADF-adatfolyam metafüggvényeit itt is használhatja, beleértve name és type használhatja a feltételeknek megfelelő tömbök regisztrációjának törléséhez szükséges mintát is. 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-szorzata lesznek.

Screenshot that shows flatten results.

Gyökér regisztrációjának törlése

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 gyökérként. A törlési gyökérnek összetett objektumok tömbjének kell lennie, amelyek tömbönként tartalmazzák vagy tartalmazzák a törlést. Ha ki van jelölve egy regisztráció nélküli gyökér, a kimeneti adatok a regisztráció törlése gyökérelemenként legalább egy sort tartalmaznak. Ha a bemeneti sor nem tartalmaz elemeket a regisztráció törlésének gyökérkönyvtárában, a program elveti a kimeneti adatokból. A törlé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 lesz, mint a tömb. Ha a tömb szerinti regisztráció törlése olyan összetett objektumok tömbje, amelyek alarráit tartalmazzák, az alarria egy elemének leképezése tömböt ad ki.

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ály alapján egyesítenék a tömböket, és hierarchiaszintek alapján egyesítenék a struktúrákat.

Flatten pattern

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. Example: 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é, hogy a névegyeztetés kifejezése normál kifejezésként jelenik meg ebben a mezőben, a fenti feltétel 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 sztringtömböt tartalmazó gyökér regisztrációjának törlése

Regisztráció törlése a következő szerint: Gyökér regisztrációjának törlése Vetület
goods.customers None név
customer = goods.customer

Hozam

{ 'MSFT', 'government'}
{ 'MSFT', 'distributer'}
{ 'MSFT', 'retail'}
{ 'Company1', 'store'}
{ 'Company1', 'store2'}
{ 'Company2', 'Bank'}
{ 'Company3', null}

Nincs gyökérjegyzék törlése összetett tömbökkel

Regisztráció törlése a következő szerint: Gyökér regisztrációjának törlése Vetület
goods.orders.shipped.orderItems None név
orderId = goods.orders.orderId
itemName = goods.orders.shipped.orderItems.itemName
itemQty = goods.orders.shipped.orderItems.itemQty
location = location

Hozam

{ '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 regisztrációjának törlése

Regisztráció törlése a következő szerint: Gyökér regisztrációjának törlése Vetület
goods.orders goods.orders név
goods.orders.shipped.orderItems.itemName
goods.customers
hely

Hozam

{ '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 regisztrációjának törlése összetett tömbbel

Regisztráció törlése a következő szerint: Gyökér regisztrációjának törlése Vetület
goods.orders.shipped.orderItem goods.orders név
orderId = goods.orders.orderId
itemName = goods.orders.shipped.orderItems.itemName
itemQty = goods.orders.shipped.orderItems.itemQty
location = location

Hozam

{ '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

Syntax

<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)