Macro e funzioni macro

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

Quando visualizzi le proprietà di un plug-in, puoi aggiungere una macro a qualsiasi campo della proprietà con accanto una M. Per aggiungere la macro, fai clic sulla 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 Logical Start Time (Ora di inizio logico)

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

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

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

Il seguente elenco mostra i parametri facoltativi per logicalStartTime():

Parametro Descrizione
timeFormat Il pattern del formato dell'ora, nel formato Java SimpleDateFormat.
offset
Offset temporale precedente all'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 seguente macro:

${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 dell'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() in plug-in basati su file

Il modo più comune per utilizzare questa funzione è nel campo Percorso nei 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 un nome file Amazon S3:

sales_012345671011.csv

Nelle proprietà del sink di 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:

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, il plug-in viene visualizzato nell'elenco Trasforma come Add Field.
  2. Quando configuri le proprietà del plug-in, aggiungi il timestamp a un record strutturato. Ad esempio, inserisci il nome del nuovo campo per il nome del campo e la funzione macro logicalStartTime() per il valore del campo.

Funzione di sicurezza

La funzione macro secure() prende una singola chiave come argomento e cerca il valore della stringa associato alla chiave dal Secure Store. Per eseguire la sostituzione, la chiave fornita come argomento deve già esistere nel Secure Store. Questo è 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 da Secure Store in fase di runtime.

Macro ricorsive

Le macro possono fare riferimento in modo ricorsivo ad altre macro fino a un massimo di dieci livelli. Gli argomenti 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:

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

In una configurazione di pipeline, utilizzi la seguente espressione:

server-address: ${server-address}

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

examplepetstore.com:9991

Passaggi successivi