Condividi tramite


Analizzare la trasformazione nel flusso di dati di mapping

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

I flussi di dati sono disponibili sia in Azure Data Factory che in Azure Synapse Pipelines. Questo articolo si applica ai flussi di dati di mapping. Se non si ha esperienza con le trasformazioni, vedere l'articolo introduttivo Trasformare i dati usando un flusso di dati di mapping.

Usare la trasformazione Analizza per analizzare le colonne di testo nei dati che sono stringhe in formato documento. I tipi correnti supportati di documenti incorporati che possono essere analizzati sono JSON, XML e testo delimitato.

Configurazione

Nel pannello di configurazione della trasformazione analisi si sceglierà prima di tutto il tipo di dati contenuti nelle colonne da analizzare inline. La trasformazione analisi contiene anche le impostazioni di configurazione seguenti.

Parse settings

Column

Analogamente alle colonne derivate e alle aggregazioni, è possibile modificare una colonna esistente selezionandola nella selezione a discesa. In alternativa, è possibile digitare qui il nome di una nuova colonna. ADF archivierà i dati di origine analizzati in questa colonna. Nella maggior parte dei casi, è necessario definire una nuova colonna che analizza il campo stringa di documento incorporato in ingresso.

Expression

Usare il generatore di espressioni per impostare l'origine per l'analisi. Può essere semplice come selezionare la colonna di origine con i dati autonomi da analizzare oppure creare espressioni complesse da analizzare.

Espressioni di esempio

  • Dati stringa di origine: chrome|steel|plastic

    • Espressione: (desc1 as string, desc2 as string, desc3 as string)
  • Dati JSON di origine: {"ts":1409318650332,"userId":"309","sessionId":1879,"page":"NextSong","auth":"Logged In","method":"PUT","status":200,"level":"free","itemInSession":2,"registration":1384448}

    • Espressione: (level as string, registration as long)
  • Dati JSON annidati di origine: {"car" : {"model" : "camaro", "year" : 1989}, "color" : "white", "transmission" : "v8"}

    • Espressione: (car as (model as string, year as integer), color as string, transmission as string)
  • Dati XML di origine: <Customers><Customer>122</Customer><CompanyName>Great Lakes Food Market</CompanyName></Customers>

    • Espressione: (Customers as (Customer as integer, CompanyName as string))
  • Codice XML di origine con dati di attributo: <cars><car model="camaro"><year>1989</year></car></cars>

    • Espressione: (cars as (car as ({@model} as string, year as integer)))
  • Nota: se si verificano errori durante l'estrazione degli attributi (ad @model) esempio da un tipo complesso, una soluzione alternativa consiste nel convertire il tipo complesso in una stringa, rimuovere il simbolo @ (ad esempio replace(toString(your_xml_string_parsed_column_name.cars.car),'@',') e quindi usare l'attività di trasformazione PARSE JSON.

Tipo di colonna di output

Ecco dove si configurerà lo schema di output di destinazione dall'analisi che verrà scritto in una singola colonna. Il modo più semplice per impostare uno schema per l'output dall'analisi consiste nel selezionare il pulsante "Rileva tipo" in alto a destra del generatore di espressioni. ADF tenterà di impostare automaticamente lo schema dal campo stringa, che verrà analizzato e impostato automaticamente nell'espressione di output.

Parse example

In questo esempio è stata definita l'analisi del campo in ingresso "jsonString", ovvero testo normale, ma formattato come struttura JSON. I risultati analizzati verranno archiviati come JSON in una nuova colonna denominata "json" con questo schema:

(trade as boolean, customers as string[])

Fare riferimento alla scheda Inspect e all'anteprima dei dati per verificare che l'output sia mappato correttamente.

Usare l'attività Colonna derivata per estrarre dati gerarchici, ovvero your_complex_column_name.car.model nel campo dell'espressione.

Esempi

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

Script del flusso di dati

Sintassi

Esempi

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
  • Utilizzare la trasformazione Flatten per pivot di righe in colonne.
  • Utilizzare la trasformazione Colonna derivata per trasformare le righe.