Analýza 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í transformace parsování můžete analyzovat textové sloupce v datech, které jsou řetězce ve formuláři dokumentu. Aktuální podporované typy vložených dokumentů, které je možné analyzovat, jsou JSON, XML a text s oddělovači.

Konfigurace

Na konfiguračním panelu transformace analýzy nejprve vyberete typ dat obsažených ve sloupcích, které chcete analyzovat v textu. Transformace analýzy obsahuje také následující nastavení konfigurace.

Parse settings

Column

Podobně jako u odvozených sloupců a agregací se jedná o místo, kde buď upravíte existující sloupec tak, že ho vyberete z rozevíracího výběru. Nebo můžete sem zadat název nového sloupce. ADF uloží analyzovaná zdrojová data v tomto sloupci. Ve většině případů budete chtít definovat nový sloupec, který analyzuje pole řetězce příchozího vloženého dokumentu.

Výraz

Pomocí tvůrce výrazů nastavte zdroj pro analýzu. To může být stejně jednoduché jako jen výběr zdrojového sloupce s daty, která chcete analyzovat, nebo můžete vytvořit složité výrazy pro analýzu.

Příklady výrazů

  • Zdrojová řetězcová data: chrome|steel|plastic

    • Výraz: (desc1 as string, desc2 as string, desc3 as string)
  • Zdrojová data JSON: {"ts":1409318650332,"userId":"309","sessionId":1879,"page":"NextSong","auth":"Logged In","method":"PUT","status":200,"level":"free","itemInSession":2,"registration":1384448}

    • Výraz: (level as string, registration as long)
  • Zdrojová vnořená data JSON: {"car" : {"model" : "camaro", "year" : 1989}, "color" : "white", "transmission" : "v8"}

    • Výraz: (car as (model as string, year as integer), color as string, transmission as string)
  • Zdrojová data XML: <Customers><Customer>122</Customer><CompanyName>Great Lakes Food Market</CompanyName></Customers>

    • Výraz: (Customers as (Customer as integer, CompanyName as string))
  • Zdrojový KÓD XML s daty atributů: <cars><car model="camaro"><year>1989</year></car></cars>

    • Výraz: (cars as (car as ({@model} as string, year as integer)))
  • Poznámka: Pokud dojde k chybám extrahování atributů (tj. @model) ze složitého typu, je alternativním řešením převést komplexní typ na řetězec, odeberte symbol @ (tj. replace(toString(your_xml_string_parsed_column_name.cars.car),'@',') a pak použijte aktivitu transformace JSON parse.

Typ výstupního sloupce

Tady je místo, kde nakonfigurujete cílové výstupní schéma z analýzy, která se zapíše do jednoho sloupce. Nejjednodušší způsob, jak nastavit schéma pro výstup z analýzy, je vybrat tlačítko Zjistit typ v pravém horním rohu tvůrce výrazů. ADF se pokusí automaticky zjistit schéma z pole řetězce, které analyzujete a nastavíte ho ve výstupním výrazu.

Parse example

V tomto příkladu jsme definovali parsování příchozího pole jsonString, což je prostý text, ale formátovaný jako struktura JSON. Analyzované výsledky uložíme jako JSON do nového sloupce s názvem json s tímto schématem:

(trade as boolean, customers as string[])

Zkontrolujte kartu kontroly a náhled dat a ověřte, že je výstup správně namapovaný.

Pomocí aktivity Odvozený sloupec extrahujte hierarchická data (tj. your_complex_column_name.car.model v poli výrazu).

Příklady

source(output(
		name as string,
		location as string,
		satellites as string[],
		goods as (trade as boolean, customers as string[], orders as (orderId as string, orderTotal as double, shipped as (orderItems as (itemName as string, itemQty as string)[]))[])
	),
	allowSchemaDrift: true,
	validateSchema: false,
	ignoreNoFilesFound: false,
	documentForm: 'documentPerLine') ~> JsonSource
source(output(
		movieId as string,
		title as string,
		genres as string
	),
	allowSchemaDrift: true,
	validateSchema: false,
	ignoreNoFilesFound: false) ~> CsvSource
JsonSource derive(jsonString = toString(goods)) ~> StringifyJson
StringifyJson parse(json = jsonString ? (trade as boolean,
		customers as string[]),
	format: 'json',
	documentForm: 'arrayOfDocuments') ~> ParseJson
CsvSource derive(csvString = 'Id|name|year\n\'1\'|\'test1\'|\'1999\'') ~> CsvString
CsvString parse(csv = csvString ? (id as integer,
		name as string,
		year as string),
	format: 'delimited',
	columnNamesAsHeader: true,
	columnDelimiter: '|',
	nullValue: '',
	documentForm: 'documentPerLine') ~> ParseCsv
ParseJson select(mapColumn(
		jsonString,
		json
	),
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> KeepStringAndParsedJson
ParseCsv select(mapColumn(
		csvString,
		csv
	),
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> KeepStringAndParsedCsv

Skript toku dat

Syntaxe

Příklady

parse(json = jsonString ? (trade as boolean,
                                customers as string[]),
                format: 'json|XML|delimited',
                documentForm: 'singleDocument') ~> ParseJson

parse(csv = csvString ? (id as integer,
                                name as string,
                                year as string),
                format: 'delimited',
                columnNamesAsHeader: true,
                columnDelimiter: '|',
                nullValue: '',
                documentForm: 'documentPerLine') ~> ParseCsv