Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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.
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.
In alcune trasformazioni, ad esempio il filtro, facendo clic su una casella di testo di espressione blu viene aperto il generatore di espressioni.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 amulti-line comment */
Inserendo un commento in cima all'espressione, questo apparirà nella casella di testo della trasformazione per documentare le espressioni utilizzate.
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.