Zploštěná transformace v mapování toku dat

PLATÍ PRO: Azure Data Factory Azure Synapse Analytics

Tip

Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.

Toky dat jsou k dispozici ve službě Azure Data Factory i v kanálech Azure Synapse. Tento článek se týká mapování toků dat. Pokud s transformacemi začínáte, přečtěte si úvodní článek Transformace dat pomocí mapování toku dat.

Pomocí zploštěné transformace můžete vzít hodnoty polí uvnitř hierarchických struktur, jako je JSON, a zrušit jejich registraci do jednotlivých řádků. Tento proces se označuje jako denormalizace.

Konfigurace

Zploštěná transformace obsahuje následující nastavení konfigurace.

Screenshot that shows flatten settings.

Zrušit registraci podle

Vyberte pole, které chcete zrušit. Výstupní data budou mít v každé matici jeden řádek na položku. Pokud je zrušení registrace podle pole ve vstupním řádku null nebo prázdné, bude jeden výstupní řádek s neregistrovanými hodnotami null. Máte možnost zrušit registraci více než jednoho pole na transformaci flatten. Kliknutím na tlačítko plus (+) zahrnete do jedné transformace s plochou transformací více polí. Tady můžete použít meta funkce toku dat ADF, včetně name a type použití porovnávání vzorů k zrušení registrace polí, která odpovídají těmto kritériím. Při zahrnutí více polí do jedné zploštěné transformace budou výsledky kartézským součinem všech možných maticových hodnot.

Screenshot that shows flatten results.

Zrušení registrace kořenového adresáře

Ve výchozím nastavení zploštěná transformace zruší registraci pole na začátek hierarchie, ve které existuje. Volitelně můžete jako kořenový adresář zrušit registraci pole. Zrušení registrace kořenového adresáře musí být pole komplexních objektů, které jsou nebo obsahují zrušení registrace podle pole. Pokud je vybrána možnost zrušit registraci kořenového adresáře, budou výstupní data obsahovat alespoň jeden řádek na položky v kořenovém adresáři zrušení registrace. Pokud vstupní řádek neobsahuje žádné položky v kořenovém adresáři pro zrušení registrace, zahodí se z výstupních dat. Při výběru kořenového adresáře pro zrušení registrace bude vždy výstupem menší nebo stejný počet řádků než výchozí chování.

Zploštěné mapování

Podobně jako u vybrané transformace zvolte projekci nové struktury z příchozích polí a denormalizovaného pole. Pokud je mapováno denormalizované pole, bude výstupní sloupec stejný datový typ jako pole. Pokud zrušení registrace podle pole je pole komplexních objektů, které obsahují podarray, mapování položky tohoto podarry vypíše pole.

Pokud chcete ověřit výstup mapování, podívejte se na kartu Kontroly a náhled dat.

Mapování založené na pravidlech

Zploštěná transformace podporuje mapování založené na pravidlech, které umožňuje vytvářet dynamické a flexibilní transformace, které budou zploštět polí na základě pravidel a zploštěných struktur na základě úrovní hierarchie.

Flatten pattern

Shoda podmínky

Zadejte podmínku porovnávání vzorů pro sloupec nebo sloupce, které chcete zploštět pomocí přesné shody nebo vzorů. Příklad: like(name,'cust%')

Hloubková procházení sloupců

Volitelné nastavení, které službě říká, aby zpracovávala všechny dílčí sloupce komplexního objektu jednotlivě místo zpracování komplexního objektu jako celého sloupce.

Úroveň hierarchie

Zvolte úroveň hierarchie, kterou chcete rozbalit.

Shoda názvů (regulární výraz)

Volitelně se můžete rozhodnout, že se vaše jméno bude v tomto poli shodovat jako regulární výraz, místo abyste používali odpovídající podmínku výše.

Příklady

Následující příklady zploštěné transformace najdete v následujícím objektu JSON.

{
  "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"}

Bez zrušení registrace kořenového adresáře s polem řetězců

Zrušit registraci podle Zrušení registrace kořenového adresáře Projekce
goods.customers Nic Jméno
customer = goods.customer

Výstup

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

Bez zrušení registrace kořenového adresáře se složitým polem

Zrušit registraci podle Zrušení registrace kořenového adresáře Projekce
goods.orders.shipped.orderItems Nic Jméno
orderId = goods.orders.orderId
itemName = goods.orders.shipped.orderItems.itemName
itemQty = goods.orders.shipped.orderItems.itemQty
location = location

Výstup

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

Stejný kořenový adresář jako zrušení registrace pole

Zrušit registraci podle Zrušení registrace kořenového adresáře Projekce
goods.orders goods.orders Jméno
goods.orders.shipped.orderItems.itemName
goods.customers
location

Výstup

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

Zrušení registrace kořenového adresáře pomocí komplexního pole

Zrušit registraci podle Zrušení registrace kořenového adresáře Projekce
goods.orders.shipped.orderItem goods.orders Jméno
orderId = goods.orders.orderId
itemName = goods.orders.shipped.orderItems.itemName
itemQty = goods.orders.shipped.orderItems.itemQty
location = location

Výstup

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

Skript toku dat

Syntaxe

<incomingStream>
foldDown(unroll(<unroll cols>),
    mapColumn(
        name,
        each(<array>(type == '<arrayDataType>')),
        each(<array>, match(true())),
        location
    )) ~> <transformationName>

Příklad

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)