Macro e funzioni macro

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

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

Per saperne di più, vedi Gestire macro, preferenze e 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 vengono forniti parametri, restituisce l'ora di inizio in millisecondi. Tutti i parametri sono facoltativi. La funzione prende in considerazione come argomenti un formato dell'ora, un offset e un fuso orario 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 di un SimpleDateFormat Java.
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 di un'esecuzione della 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 corrisponde a 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 della macro.

Esempio

In questo esempio, includi l'ora di inizio della pipeline, in millisecondi, nel nome di un 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 di oggi nel seguente nome file S3:

s3a://sales-data/sales_20210204.csv

Nelle proprietà di destinazione 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 da Cloud Data Fusion Hub. 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 record strutturato, ad esempio, per il nome del campo, inserisci il nome del nuovo campo e per il valore del campo, inserisci la funzione della macro logicalStartTime().

Funzione sicura

La funzione macro secure() accetta un'unica chiave come argomento e cerca il valore della stringa associato alla chiave nel Secure Store. Per eseguire la sostituzione, la chiave fornita come argomento deve già essere presente 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à 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 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
  • server-address: ${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