Macros e funções de macro

As macros são marcadores de posição nas configurações das propriedades do plug-in do Cloud Data Fusion. São representados por variáveis incluídas em ${ }, como ${input_file_path}. Para ativar a configuração dinâmica de elementos, como caminhos de ficheiros e nomes de tabelas, os marcadores de posição são substituídos por valores reais no momento da execução.

Quando visualiza as propriedades de um plug-in, pode adicionar uma macro a qualquer campo de propriedade que tenha um M junto ao mesmo. Para adicionar a macro, clique em M.

Para mais informações, consulte o artigo Faça a gestão de macros, preferências e argumentos de tempo de execução.

Funções de macro

Além das macros, pode usar as seguintes funções de macro predefinidas:

  • logicalStartTime()
  • secure()

Função Logical Start Time

A função de macro logicalStartTime() devolve a hora de início lógica de uma execução da pipeline como um valor de string.

Se não forem fornecidos parâmetros, devolve a hora de início em milissegundos. Todos os parâmetros são opcionais. A função seleciona um formato de hora, um desvio e um fuso horário como argumentos e usa a hora de início lógica de um pipeline para fazer a substituição:

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

A lista seguinte mostra os parâmetros opcionais para logicalStartTime():

Parâmetro Descrição
timeFormat O padrão de formato de hora, no formato de um SimpleDateFormat de Java.
offset
Desvio de tempo antes da hora de início lógica.
timezone
Fuso horário a usar para a hora de início lógica.

Exemplo

Neste exemplo, a hora de início lógica de uma execução da pipeline é 2020-01-01T00:00:00 e fornece a seguinte macro:

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

O formato é yyyy-MM-dd'T'HH-mm-ss e o desvio é 1d-4h+30m antes da hora de início lógica. Em tempo de execução, o valor da macro é substituído por 2019-12-31T03:30:00 porque o desvio corresponde a 20,5 horas. A macro inteira é avaliada como 20, 5 horas antes da meia-noite de 1 de janeiro de 2020.

Usar o logicalStartTime() em plug-ins baseados em ficheiros

A forma mais comum de usar esta função é no campo Caminho em plug-ins baseados em ficheiros.

Incluir a hora de início do pipeline em milissegundos num nome de ficheiro

Para capturar a hora de início real em milissegundos num nome de ficheiro, omita os parâmetros na função de macro.

Exemplo

Neste exemplo, inclui a hora de início do pipeline, em milissegundos, num nome de ficheiro do Amazon S3:

sales_012345671011.csv

Nas propriedades do destino do Amazon S3, introduza o seguinte valor no campo Caminho:

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

Incluir a data de hoje num nome de ficheiro

Pode usar a função de macro logicalStartTime() num nome de ficheiro para capturar a data atual.

Exemplo

Neste exemplo, captura a data de hoje no seguinte nome de ficheiro do S3:

s3a://sales-data/sales_20210204.csv

Nas propriedades do destino do Amazon S3, introduza o seguinte valor no campo Caminho:

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

Usar o logicalStartTime para adicionar um campo de indicação de tempo a registos estruturados

Pode adicionar uma indicação de tempo a um registo estruturado através da transformação Adicionar campo e logicalStartTime().

  1. Obtenha o plug-in Field Adder Transform a partir do Cloud Data Fusion Hub. Depois de implementar o plug-in, este é apresentado na lista Transformar como Adicionar campo.
  2. Quando configurar as propriedades do plug-in, adicione a data/hora a um registo estruturado. Por exemplo, para o nome do campo, introduza o nome do novo campo e, para o valor do campo, introduza a função de macro logicalStartTime().

Função segura

A função de macro secure() recebe uma única chave como argumento e procura o valor de string associado da chave no armazenamento seguro. Para realizar a substituição, a chave fornecida como argumento já tem de existir no armazenamento seguro. Isto é útil para fazer uma substituição com dados confidenciais.

Exemplo

Neste exemplo, para um plug-in que se liga a uma base de dados MySQL, configura o campo da propriedade de palavra-passe com o seguinte valor:

${secure(password)}

Esta macro extrai a palavra-passe do armazenamento seguro no momento da execução.

Macros recursivas

As macros podem referir-se recursivamente a outras macros até dez níveis. Os argumentos das macros são avaliados do argumento mais interior para o mais exterior.

Exemplo

Neste exemplo, tem um servidor que faz referência a um nome de anfitrião e a uma porta. Fornece os seguintes argumentos de tempo de execução, o último dos quais é uma macro que se refere a outras macros:

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

Numa configuração de pipeline, usa a seguinte expressão:

server-address: ${server-address}

Em tempo de execução, é substituído pelo seguinte valor:

examplepetstore.com:9991

O que se segue?