Átalakítás elemzése a leképezési adatfolyamban

A következőkre vonatkozik: Azure Data Factory Azure Synapse Analytics

Tipp.

Próbálja ki a Data Factoryt a Microsoft Fabricben, amely egy teljes körű elemzési megoldás a nagyvállalatok számára. A Microsoft Fabric az adattovábbítástól az adatelemzésig, a valós idejű elemzésig, az üzleti intelligenciáig és a jelentéskészítésig mindent lefed. Ismerje meg, hogyan indíthat új próbaverziót ingyenesen!

Az adatfolyamok az Azure Data Factoryben és az Azure Synapse Pipelinesban is elérhetők. Ez a cikk az adatfolyamok leképezésére vonatkozik. Ha még nem használta az átalakításokat, tekintse meg az adatok leképezési adatfolyam használatával történő átalakításáról szóló bevezető cikket.

Az Elemzés átalakítás használatával elemezheti az adatok szöveges oszlopait, amelyek sztringek a dokumentumformátumban. Az elemezhető beágyazott dokumentumok jelenlegi támogatott típusai a JSON, az XML és a tagolt szöveg.

Konfiguráció

Az elemzési átalakítási konfigurációs panelen először kiválaszthatja azoknak az oszlopoknak az adattípusát, amelyeket beágyazottként szeretne elemezni. Az elemzési átalakítás a következő konfigurációs beállításokat is tartalmazza.

Parse settings

Column

A származtatott oszlopokhoz és aggregátumokhoz hasonlóan itt módosíthatja a meglévő oszlopokat a legördülő választóból való kijelöléssel. Vagy itt beírhatja egy új oszlop nevét. Az ADF ebben az oszlopban tárolja az elemezt forrásadatokat. A legtöbb esetben meg kell határoznia egy új oszlopot, amely elemzi a bejövő beágyazott dokumentum sztring mezőjét.

Expression

Az elemzés forrásának beállításához használja a kifejezésszerkesztőt. Ez lehet olyan egyszerű, mint a forrásoszlop kijelölése az elemezni kívánt önálló adatokkal, vagy összetett kifejezéseket is létrehozhat elemzésre.

Mintakifejezések

  • Forrássztring-adatok: chrome|steel|plastic

    • Kifejezés: (desc1 as string, desc2 as string, desc3 as string)
  • Forrás JSON-adatok: {"ts":1409318650332,"userId":"309","sessionId":1879,"page":"NextSong","auth":"Logged In","method":"PUT","status":200,"level":"free","itemInSession":2,"registration":1384448}

    • Kifejezés: (level as string, registration as long)
  • Beágyazott JSON-adatok forrása: {"car" : {"model" : "camaro", "year" : 1989}, "color" : "white", "transmission" : "v8"}

    • Kifejezés: (car as (model as string, year as integer), color as string, transmission as string)
  • Forrás XML-adatok: <Customers><Customer>122</Customer><CompanyName>Great Lakes Food Market</CompanyName></Customers>

    • Kifejezés: (Customers as (Customer as integer, CompanyName as string))
  • Forrás XML attribútumadatokkal: <cars><car model="camaro"><year>1989</year></car></cars>

    • Kifejezés: (cars as (car as ({@model} as string, year as integer)))
  • Megjegyzés: Ha olyan hibákba ütközik, amikor attribútumokat nyer ki (például @model) összetett típusból, a megkerülő megoldás az, hogy az összetett típust sztringgé alakítja, távolítsa el a @ szimbólumot (azaz replace(toString(your_xml_string_parsed_column_name.cars.car),'@''), majd használja az elemzésI JSON-átalakítási tevékenységet.

Kimeneti oszlop típusa

Itt konfigurálhatja a cél kimeneti sémát az elemzésből, amely egyetlen oszlopba lesz írva. A legegyszerűbben úgy állíthatja be a kimenet sémáját az elemzésből, ha a kifejezésszerkesztő jobb felső sarkában található "Típus észlelése" gombot választja. Az ADF megkísérli automatikusan létrehozni a sémát a sztringmezőből, amelyet elemez, majd beállít a kimeneti kifejezésben.

Parse example

Ebben a példában definiáltuk a "jsonString" bejövő mező elemzését, amely egyszerű szöveg, de JSON-struktúraként van formázva. Az elemzési eredményeket JSON-ként fogjuk tárolni egy új, "json" nevű oszlopban ezzel a sémával:

(trade as boolean, customers as string[])

A kimenet megfelelő leképezésének ellenőrzéséhez tekintse meg a vizsgálat lapot és az adatok előnézetét.

Hierarchikus adatok kinyerése a Származtatott oszlop tevékenység használatával (azaz your_complex_column_name.car.model a kifejezésmezőben)

Példák

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

Adatfolyamszkript

Syntax

Példák

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