Condividi tramite


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 all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!

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. Il completamento del codice IntelliSense viene utilizzato per evidenziare, controllare la sintassi e completare automaticamente, ed è progettato per semplificare la creazione dei flussi di dati. Questo articolo illustra come usare il generatore di espressioni per creare in modo efficace la logica di business.

Generatore di espressioni

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.

Apri il Generatore di espressioni derivato

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

Casella di espressione blu

Quando si fa riferimento a colonne in una condizione di corrispondenza o di raggruppamento, un'espressione può estrarre valori dalle colonne. Per creare un'espressione, selezionare Colonna calcolata.

Opzione colonna calcolata

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.

Opzione Aggiungi contenuto dinamico

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.

Elementi di espressione

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.

Matrice di Generatore di espressioni

Importante

Nei flussi di dati di mapping, le matrici sono basate su uno, il che significa che il primo elemento è indicizzato con 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 il drift dello schema, è possibile fare riferimento alle colonne in modo esplicito usando le funzioni byName() o byNames() oppure mediante abbinamenti usando 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 vista Elementi di espressione o fare riferimento ad esso con un segno di 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: lookup() e outputs(). La sintassi per fare riferimento a queste funzioni è cacheSinkName#functionName(). Per ulteriori informazioni, vedere cache sinks.

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 sottocolonna 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 dovrebbe essere usata solo se sono presenti poche 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.

Ricerca memorizzata nella cache

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.

Creare un ambiente locale

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.

Crea locale 2

Per fare riferimento a un locale in una trasformazione, selezionare il 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.

Uso delle variabili locali

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.

Anteprima in corso

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 */

Inserendo un commento in cima all'espressione, questo apparirà nella casella di testo della trasformazione per documentare le espressioni utilizzate.

Commento nella casella di testo della trasformazione

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 rovesciate nell'espressione regolare, racchiudono l'intera espressione regolare in backticks (`) o usare una doppia barra rovesciata.

Esempio che usa gli apici inversi:

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 delle scorciatoie IntelliSense è disponibile durante la creazione di espressioni.

  • CTRL+K CTRL+C: Commenta l'intera riga.
  • CTRL+K CTRL+U: Rimuovi commento.
  • F1: Mostra i comandi di aiuto dell'editor.
  • ALT+FRECCIA GIÙ: sposta verso il basso la linea corrente.
  • ALT + FRECCIA SU: Sposta la linea corrente verso l'alto.
  • Ctrl+Barra spaziatrice: mostra la Guida contestuale.

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 è fornito in secondi, moltiplicalo per 1.000.

toTimestamp(1574127407*1000l)

L'elemento finale "l" alla fine dell'espressione precedente indica la conversione al tipo long utilizzando la sintassi inline.

Trovare il tempo da epoch o Unix Time

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

Valutazione del tempo del flusso di dati

Il Dataflow elabora i processi in 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 nelle impostazioni del browser corrente, che può eliminare 217 millisecondi, ma quando si esegue il flusso di dati end-to-end, 217 millisecondi (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.