Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
VZTAHUJE SE NA:
Azure Data Factory
Azure Synapse Analytics
Toky dat jsou k dispozici v kanálech Azure Data Factory i v kanálech Azure Synapse Analytics. 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í toků dat.
Tip
Ekvivalentní transformaci (rozbalení sloupce) v Dataflow Gen2 najdete v průvodci Dataflow Gen2 pro uživatele mapování toků dat.
Pomocí transformace flatten můžete vzít hodnoty polí, jako je JSON, uvnitř hierarchických struktur a rozbalit je do jednotlivých řádků. Tento proces se označuje jako denormalizace.
Konfigurace
Transformace flatten obsahuje následující nastavení konfigurace.
Rozbalit pomocí
Vyberte pole, které chcete rozbalit. Výstupní data mají jeden řádek pro každou položku v každém poli. Pokud je rozbalení podle pole ve vstupním řádku null nebo prázdný, existuje jeden výstupní řádek s rozbalenými hodnotami jako null. Při transformaci typu Flatten můžete rozbalit více než jedno pole. Výběrem tlačítka plus (+) zahrnete více polí do jedné transformace typu Narrow. Tady můžete použít meta funkce toku dat ADF, včetně name a type, a použít porovnávání vzorů k rozbalení polí, která odpovídají těmto kritériím. Při zahrnutí více polí do jedné zploštěné transformace jsou výsledky kartézským součinem všech možných maticových hodnot.
Rozbalit kořen
Ve výchozím nastavení transformace zploštění uvolní pole na nejvyšší úroveň hierarchie, ve které se nachází. Volitelně můžete vybrat pole jako váš kořen rozbalení. Kořen rozvinutí musí být pole složitých objektů, které buď samo o sobě je nebo obsahuje rozvinutí podle pole. Pokud je vybrána možnost zrušit registraci kořenového adresáře, výstupní data obsahují 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, dojde k jeho vyřazení z výstupních dat. Výběr zrušení registrace kořenového adresáře vždy vypíše 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, je výstupní sloupec stejný datový typ jako pole. Pokud je rozvinutí podle pole pole komplexních objektů, které obsahují podpola, pak mapování položky tohoto podpola vrátí 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
Transformace zploštěním podporuje mapování založené na pravidlech, které umožňuje vytvářet dynamické a flexibilní transformace, které zplošťují pole na základě pravidel a struktury na základě úrovní hierarchie.
Podmínka shody
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ě můžete místo použití odpovídající podmínky uvést své jméno jako regulární výraz v tomto poli.
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 rozvinutí kořene s polem řetězců
| Rozbalit pomocí | Rozbalit kořen | Projekce |
|---|---|---|
| zboží.zákazníci | Nic | Jméno zákazník = zboží.zákazník |
Výstup
{ 'MSFT', 'government'}
{ 'MSFT', 'distributer'}
{ 'MSFT', 'retail'}
{ 'Company1', 'store'}
{ 'Company1', 'store2'}
{ 'Company2', 'Bank'}
{ 'Company3', null}
Neukončujte odvíjení kořene s komplexním polem
| Rozbalit pomocí | Rozbalit kořen | Projekce |
|---|---|---|
| zboží.objednávky.odesláno.položky_objednávky | Nic | Jméno orderId = goods.orders.orderId itemName = goods.orders.shipped.orderItems.názevPoložky itemQty = zboží.objednávky.odesláno.orderItems.itemQty location = umístění |
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ý základ jako rozbalení pole
| Rozbalit pomocí | Rozbalit kořen | Projekce |
|---|---|---|
| objednávky zboží | objednávky zboží | Jméno goods.orders.shipped.orderItems.itemName zbozi.zakaznici poloha |
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'}
Rozbalit kořen pomocí komplexního pole
| Rozbalit pomocí | Rozbalit kořen | Projekce |
|---|---|---|
| zboží.objednávky.odeslané.objednanáPoložka | objednávky zboží | Jméno orderId = goods.orders.orderId itemName = goods.orders.shipped.orderItems.názevPoložky itemQty = zboží.objednávky.odesláno.orderItems.itemQty location = umístění |
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
- Použijte transformaci pivotování pro převod řádků na sloupce.
- Transformace Unpivot k převodu sloupců na řádky.