Macro e funzioni macro

Le macro sono segnaposto all'interno della proprietà del plug-in di Cloud Data Fusion configurazioni. Sono rappresentate da variabili racchiuse all'interno di ${ }, come ${input_file_path}. Per attivare la configurazione dinamica di elementi, ad esempio file e nomi delle tabelle, i segnaposto vengono sostituiti con valori effettivi runtime.

Quando visualizzi le proprietà di un plug-in, puoi aggiungere una macro a qualsiasi campo della proprietà accanto alla quale è presente una M. Per aggiungere la macro, fai clic su M.

Per ulteriori informazioni, consulta Gestire le macro, le preferenze e gli argomenti di runtime.

Funzioni macro

Oltre alle macro, puoi utilizzare le seguenti funzioni macro predefinite:

  • logicalStartTime()
  • secure()

Funzione Ora di inizio logica

La funzione della macro logicalStartTime() restituisce l'ora di inizio logica di un'esecuzione della pipeline come valore di stringa.

Se non viene fornito alcun parametro, viene restituita l'ora di inizio in millisecondi. Tutti sono facoltativi. La funzione richiede un formato ora, un offset e un il fuso orario come argomenti e utilizza l'ora di inizio logica di una pipeline per eseguire la sostituzione:

${logicalStartTime([timeFormat[,offset [,timezone])}

L'elenco seguente mostra i parametri facoltativi per logicalStartTime():

Parametro Descrizione
timeFormat Il pattern del formato dell'ora, nel formato Java SimpleDateFormat.
offset
Offset di tempo prima dell'ora di inizio logica.
timezone
Fuso orario da utilizzare per l'ora di inizio logica.

Esempio

In questo esempio, l'ora di inizio logica dell'esecuzione di una pipeline è 2020-01-01T00:00:00 e fornisci la macro seguente:

${logicalStartTime(yyyy-MM-dd'T'HH-mm-ss,1d-4h+30m)}

Il formato è yyyy-MM-dd'T'HH-mm-ss e l'offset è 1d-4h+30m prima del in un'ora di inizio logica. In fase di runtime, il valore della macro viene sostituito con 2019-12-31T03:30:00 perché l'offset si traduce in 20,5 ore. L'intera macro viene valutata 20,5 ore prima della mezzanotte del 1° gennaio 2020.

Utilizzo di logicalStartTime() nei plug-in basati su file

Il modo più comune per utilizzare questa funzione è nel campo Percorso dei plug-in basati su file.

Inclusione dell'ora di inizio della pipeline in millisecondi in un nome file

Per acquisire l'ora di inizio effettiva in millisecondi in un nome file, ometti i parametri nella funzione macro.

Esempio

In questo esempio, includi l'ora di inizio della pipeline, in millisecondi, in una Nome file Amazon S3:

sales_012345671011.csv

Nelle proprietà di destinazione Amazon S3, inserisci il seguente valore nel campo Percorso:

s3a://sales-data/sales_${logicalStartTime()}.csv

Inclusione della data odierna in un nome file

Puoi utilizzare la funzione macro logicalStartTime() in un nome file per acquisire la data corrente.

Esempio

In questo esempio, acquisisci la data odierna nel seguente nome file S3:

s3a://sales-data/sales_20210204.csv

Nelle proprietà del sink di Amazon S3, inserisci il seguente valore nel campo Percorso campo:

s3a://sales-data/sales_${logicalStartTime(yyyyMMdd)}.csv

Utilizzo di logicalStartTime per aggiungere un campo Timestamp ai record strutturati

Puoi aggiungere il timestamp a un record strutturato utilizzando la trasformazione Aggiungi campo e logicalStartTime().

  1. Ottieni il plug-in Field Adder Transform (Trasformazione Field Adder) dall'hub Cloud Data Fusion. Dopo aver eseguito il deployment del plug-in, questo viene visualizzato nell'elenco Trasforma come Aggiungi campo.
  2. Quando configuri le proprietà del plug-in, aggiungi il timestamp a un ad esempio, per il nome del campo, inserisci il nome del nuovo e per il valore del campo, inserisci la macro logicalStartTime() personalizzata.

Funzione di sicurezza

La funzione macro secure() prende una singola chiave come argomento e cerca il valore della stringa associata alla chiave da Secure Store. Per eseguire la sostituzione, la chiave fornita come argomento deve già nel Secure Store. Questa operazione è utile per eseguire una sostituzione con dati sensibili.

Esempio

In questo esempio, per un plug-in che si connette a un database MySQL, configuri il campo della proprietà della password con il seguente valore:

${secure(password)}

Questa macro estrae la password dal Secure Store in fase di esecuzione.

Macro ricorsive

Le macro possono fare riferimento in modo ricorsivo ad altre macro fino a un massimo di dieci livelli. Gli argomenti della macro vengono valutati dall'argomento più interno a quello più esterno.

Esempio

In questo esempio, hai un server che fa riferimento a un nome host e a una porta. Fornisci i seguenti argomenti di runtime, l'ultimo dei quali è una macro che fa riferimento ad altre macro:

  • hostname: examplepetstore.com
  • port: 9991
  • indirizzo-server: ${hostname}:${port}

In una configurazione della pipeline, utilizza la seguente espressione:

server-address: ${server-address}

In fase di runtime, viene sostituito con il seguente valore:

examplepetstore.com:9991

Passaggi successivi