Creare espressioni 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 .

Nel flusso di dati di mapping vengono immesse molte proprietà di trasformazione come espressioni. Queste espressioni sono costituite da valori di colonna, parametri, funzioni, operatori e valori letterali che restituiscono un tipo di dati Spark in fase di esecuzione. I flussi di dati di mapping hanno un'esperienza dedicata che consente di creare queste espressioni denominate Generatore di espressioni. L'uso del completamento del codice IntelliSense per evidenziare, controllare la sintassi e il completamento automatico, il generatore di espressioni è progettato per semplificare la compilazione dei flussi di dati. Questo articolo illustra come usare il generatore di espressioni per creare in modo efficace la logica di business.

Expression Builder

Aprire Generatore di espressioni

Esistono più punti di ingresso per aprire il generatore di espressioni. Questi sono tutti dipendenti dal contesto specifico della trasformazione del flusso di dati. Il caso d'uso più comune riguarda trasformazioni come la colonna derivata e l'aggregazione in cui gli utenti creano o aggiornano colonne usando il linguaggio delle espressioni del flusso di dati. Il generatore di espressioni può essere aperto selezionando Apri generatore di espressioni sopra l'elenco di colonne. È anche possibile selezionare un contesto di colonna e aprire il generatore di espressioni direttamente in tale espressione.

Open Expression Builder derive

In alcune trasformazioni, ad esempio il filtro, facendo clic su una casella di testo di espressione blu viene aperto il generatore di espressioni.

Blue expression box

Quando si fa riferimento a colonne in una condizione corrispondente o group-by, un'espressione può estrarre valori dalle colonne. Per creare un'espressione, selezionare Colonna calcolata.

Computed column option

Nei casi in cui un'espressione o un valore letterale sono input validi, selezionare Aggiungi contenuto dinamico per compilare un'espressione che restituisce un valore letterale.

Add dynamic content option

Elementi di espressione

Nei flussi di dati di mapping, le espressioni possono essere costituite da valori di colonna, parametri, funzioni, variabili locali, operatori e valori letterali. Queste espressioni devono restituire un tipo di dati Spark, ad esempio string, booleano o integer.

Expression elements

Funzioni

I flussi di dati di mapping hanno funzioni e operatori predefiniti che possono essere usati nelle espressioni. Per un elenco delle funzioni disponibili, vedere informazioni di riferimento sul linguaggio del flusso di dati per mapping.

Funzioni definite dall'utente (anteprima)

I flussi di dati di mapping supportano la creazione e l'uso di funzioni definite dall'utente. Per informazioni su come creare e usare funzioni definite dall'utente, vedere funzioni definite dall'utente.

Indici della matrice di indirizzi

Quando si usano colonne o funzioni che restituiscono tipi di matrice, usare parentesi quadre ([]) per accedere a un elemento specifico. Se l'indice non esiste, l'espressione restituisce NULL.

Expression Builder array

Importante

Nei flussi di dati di mapping, le matrici sono basate su un solo significato che fa riferimento al primo elemento dall'indice 1. Ad esempio, myArray[1] accederà al primo elemento di una matrice denominata "myArray".

Schema di input

Se il flusso di dati usa uno schema definito in una delle relative origini, è possibile fare riferimento a una colonna in base al nome in molte espressioni. Se si usa la deriva dello schema, è possibile fare riferimento alle colonne in modo esplicito usando le byName() funzioni o byNames() o le corrispondenze usando i modelli di colonna.

Nomi di colonna con caratteri speciali

Quando sono presenti nomi di colonna che includono spazi o caratteri speciali, racchiudere il nome tra parentesi graffe per farvi riferimento in un'espressione.

{[dbo].this_is my complex name$$$}

Parametri

I parametri sono valori passati in un flusso di dati in fase di esecuzione da una pipeline. Per fare riferimento a un parametro, selezionare il parametro dalla visualizzazione Elementi espressione o farvi riferimento con un segno dollaro davanti al nome. Ad esempio, un parametro denominato parameter1 viene fatto riferimento da $parameter1. Per altre informazioni, vedere Parametrizzazione dei flussi di dati di mapping.

Ricerca memorizzata nella cache

Una ricerca memorizzata nella cache consente di eseguire una ricerca inline dell'output di un sink memorizzato nella cache. Sono disponibili due funzioni da usare in ogni sink e lookup()outputs(). La sintassi per fare riferimento a queste funzioni è cacheSinkName#functionName(). Per altre informazioni, vedere Sink della cache.

lookup() accetta le colonne corrispondenti nella trasformazione corrente come parametri e restituisce una colonna complessa uguale alla riga corrispondente alle colonne chiave nel sink della cache. La colonna complessa restituita contiene una sottocolumn per ogni colonna mappata nel sink della cache. Ad esempio, se si dispone di un sink errorCodeCache della cache del codice di errore con una colonna chiave corrispondente al codice e a una colonna denominata Message. La chiamata errorCodeCache#lookup(errorCode).Message restituirà il messaggio corrispondente al codice passato.

outputs() non accetta parametri e restituisce l'intero sink della cache come matrice di colonne complesse. Questa operazione non può essere chiamata se nel sink sono specificate colonne chiave e devono essere usate solo se sono presenti alcune righe nel sink della cache. Un caso d'uso comune è l'aggiunta del valore massimo di una chiave di incremento. Se una singola riga CacheMaxKey aggregata memorizzata nella cache contiene una colonna MaxKey, è possibile fare riferimento al primo valore chiamando CacheMaxKey#outputs()[1].MaxKey.

Cached lookup

Variabili locali

Se si condivide la logica tra più colonne o si vuole compartimentare la logica, è possibile creare una variabile locale. Un locale è un set di logica che non viene propagato a valle alla trasformazione seguente. È possibile creare variabili locali all'interno del generatore di espressioni passando a Elementi espressione e selezionando Variabili locali. Crearne uno nuovo selezionando Crea nuovo.

Create local

Le variabili locali possono fare riferimento a qualsiasi elemento di espressione, tra cui funzioni, schema di input, parametri e altre variabili locali. Quando si fa riferimento ad altre variabili locali, l'ordine è importante perché il locale a cui si fa riferimento deve essere "sopra" quello corrente.

Create local 2

Per fare riferimento a un elemento locale in una trasformazione, selezionare l'elemento locale dalla visualizzazione Elementi espressione oppure farvi riferimento con due punti davanti al nome. Ad esempio, a un locale denominato local1 viene fatto riferimento da :local1. Per modificare una definizione locale, passare il puntatore del mouse sulla vista elementi dell'espressione e selezionare l'icona a forma di matita.

Using locals

Visualizzare in anteprima i risultati dell'espressione

Se la modalità di debug è attivata, è possibile usare in modo interattivo il cluster di debug per visualizzare in anteprima i valori restituiti dall'espressione. Selezionare Aggiorna accanto all'anteprima dei dati per aggiornare i risultati dell'anteprima dei dati. È possibile visualizzare l'output di ogni riga in base alle colonne di input.

In-progress preview

Interpolazione di stringa

Quando si creano stringhe lunghe che usano elementi di espressione, usare l'interpolazione di stringhe per creare facilmente una logica di stringa complessa. L'interpolazione di stringhe evita un uso esteso della concatenazione di stringhe quando i parametri vengono inclusi nelle stringhe di query. Usare le virgolette doppie per racchiudere il testo della stringa letterale insieme alle espressioni. È possibile includere funzioni di espressione, colonne e parametri. Per usare la sintassi delle espressioni, racchiuderla tra parentesi graffe,

Alcuni esempi di interpolazione di stringhe:

  • "My favorite movie is {iif(instr(title,', The')>0,"The {split(title,', The')[1]}",title)}"

  • "select * from {$tablename} where orderyear > {$year}"

  • "Total cost with sales tax is {round(totalcost * 1.08,2)}"

  • "{:playerName} is a {:playerRating} player"

Nota

Quando si usa la sintassi di interpolazione di stringhe nelle query di origine SQL, la stringa di query deve trovarsi in una sola riga, senza '/n'.

Espressioni di commento

Aggiungere commenti alle espressioni usando la sintassi di commento a riga singola e multilinea.

Gli esempi seguenti sono commenti validi:

  • /* This is my comment */

  • /* This is a

  • multi-line comment */

Se si inserisce un commento nella parte superiore dell'espressione, viene visualizzato nella casella di testo della trasformazione per documentare le espressioni di trasformazione.

Comment in the transformation text box

Espressioni regolari

Molte funzioni del linguaggio delle espressioni usano la sintassi delle espressioni regolari. Quando si usano funzioni di espressione regolare, Expression Builder tenta di interpretare una barra rovesciata (\) come sequenza di caratteri di escape. Quando si usano barre rovesciata nell'espressione regolare, racchiudere l'intera espressione regolare in backticks (') o usare una doppia barra rovesciata.

Esempio che usa i backtick:

regex_replace('100 and 200', `(\d+)`, 'digits')

Esempio che usa barre doppie:

regex_replace('100 and 200', '(\\d+)', 'digits')

Scelte rapide da tastiera

Di seguito è riportato un elenco di collegamenti disponibili nel generatore di espressioni. La maggior parte dei collegamenti intelliSense è disponibile durante la creazione di espressioni.

  • CTRL+K CTRL+C: Commenta l'intera riga.
  • CTRL+K CTRL+U: Rimuovi commento.
  • F1: specificare i comandi della Guida dell'editor.
  • ALT+FRECCIA GIÙ: sposta verso il basso la linea corrente.
  • ALT+FRECCIA SU: sposta verso l'alto la linea corrente.
  • CTRL+BARRA SPAZIATRICE: mostra la Guida al contesto.

Espressioni di uso comune

Converti in date o timestamp

Per includere i valori letterali stringa nell'output del timestamp, eseguire il wrapping della conversione in toString().

toString(toTimestamp('12/31/2016T00:12:00', 'MM/dd/yyyy\'T\'HH:mm:ss'), 'MM/dd /yyyy\'T\'HH:mm:ss')

Per convertire i millisecondi da un periodo a una data o un timestamp, usare toTimestamp(<number of milliseconds>). Se il tempo arriva in secondi, moltiplicare per 1.000.

toTimestamp(1574127407*1000l)

L'elemento finale "l" alla fine dell'espressione precedente indica la conversione in un tipo long come sintassi inline.

Trovare l'ora dall'epoca o dall'ora Unix

toLong( currentTimestamp() - toTimestamp('1970-01-01 00:00:00.000', 'aaaa-MM-gg HH:mm:ss. SSS') ) * 1000l

Valutazione del tempo del flusso di dati

Il flusso di dati elabora fino a millisecondi. Per 2018-07-31T20:00:00.2170000, nell'output verrà visualizzato 2018-07-31T20:00:00.217 . Nel portale per il servizio, il timestamp viene visualizzato nell'impostazione del browser corrente, che può eliminare 217, ma quando si eseguirà il flusso di dati end-to-end, 217 (anche la parte in millisecondi viene elaborata). È possibile usare toString(myDateTimeColumn) come espressione e visualizzare i dati di precisione completa in anteprima. Elaborare datetime come datetime anziché stringa per tutti gli scopi pratici.

Iniziare a creare espressioni di trasformazione dei dati.