Sdílet prostřednictvím


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 datovou vědu, analýzy v reálném čase, business intelligence a reporting. Přečtěte si, jak začít používat novou zkušební verzi zdarma.

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.

Pomocí parsování můžete analyzovat textové sloupce v datech, které jsou řetězce ve formě 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 zpracování transformace nejprve vyberete typ dat obsažených ve sloupcích, které chcete analyzovat řádkově. Transformace analýzy obsahuje také následující nastavení konfigurace.

Nastavení parsování

Sloupec

Podobně jako odvozené sloupce a agregace je vlastnost Column tam, 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 ukládá analyzovaná zdrojová data v tomto sloupci. Ve většině případů chcete 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. Nastavení zdroje 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)))
  • Výrazy s vyhrazenými znaky: { "best-score": { "section 1": 1234 } }

    • Výše uvedený výraz nefunguje, protože znak best-score "-" je interpretován jako operace odčítání. Pomocí proměnné se zápisem závorek v těchto případech nechte JSON engine text interpretovat doslova:
      var bestScore = data["best-score"];
      { bestScore : { "section 1": 1234 } }
      
  • Poznámka: Pokud dojde k chybám extrahování atributů (konkrétně @model) z komplexního typu, alternativním řešením je převést komplexní typ na řetězec, odebrat symbol @ (konkrétně nahradit(toString(your_xml_string_parsed_column_name.cars.car),'@',') a pak použít transformační aktivitu PARSE JSON.

Typ výstupního sloupce

Tady je místo, kde nakonfigurujete cílové výstupní schéma z analýzy, která je zapsaná 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í ho za vás ve výstupním výrazu.

Příklad analýzy

V tomto příkladu jsme definovali analýzu 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, například 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