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.
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.
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.
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)
Související obsah
- Pomocí transformace kontingenční tabulky můžete převést řádky na sloupce.
- Transformace Převést na řádky pomocí transformace Převést na řádky