Os parâmetros de agendamento substituem dinamicamente valores baseados em tempo no código durante a execução, eliminando a necessidade de codificar datas fixas em fluxos de trabalho recorrentes. Este tópico descreve os formatos suportados e o uso dos valores de parâmetro.
Certifique-se de entender como configurar parâmetros de agendamento. Para obter detalhes, consulte Configurar e usar parâmetros de agendamento.
Conceitos fundamentais: Linhas de base de tempo
Os parâmetros de tempo substituem dinamicamente strings de tempo durante a execução. Todos os parâmetros de tempo no DataWorks baseiam-se nas duas linhas de base de tempo principais a seguir.
|
Conceito |
Descrição |
Padrão |
Formato personalizado |
Precisão |
|
Data de negócio |
O dia anterior à data de execução agendada da tarefa. Em cenários de computação offline T+1, representa a data em que os dados de negócio foram gerados. Por exemplo, se você executar uma tarefa hoje para calcular a receita de vendas de ontem, "ontem" refere-se à data em que as transações ocorreram, ou seja, a data de negócio. |
|
|
Ano-mês-dia |
|
Hora agendada |
A scheduled time definida na configuração de agendamento da tarefa. Durante a execução, o sistema a resolve como o dia atual. Ela representa o horário teórico de execução da tarefa e não sofre alterações devido a filas de recursos ou atrasos. |
|
|
Ano-mês-dia-hora-minuto-segundo |
Resumo:
Data de negócio ≈ Ontem (a data dos dados)
Hora agendada ≈ Hoje (o momento em que a tarefa é executada)
Uma tarefa típica de T+1 inicia na madrugada de hoje (hora agendada) para processar dados de ontem (data de negócio).
Expressão de valor de parâmetro
Os parâmetros de agendamento suportam os seguintes tipos de valores:
Parâmetros de tempo personalizados: Expressões como
${...}e$[...]que transformam valores com base nas duas linhas de base de tempo: data de negócio e hora de agendamento. Para mais informações, consulte Parâmetros de tempo personalizados.Parâmetros de sistema integrados: Variáveis predefinidas, como
$bizdate,$bizmonthe$jobid, que retornam valores como a data de negócio, mês de negócio ou ID do fluxo de trabalho. Estes não se limitam a valores baseados em tempo. Para mais informações, consulte Parâmetros de sistema integrados.Constantes: Valores literais, como
'123'e'abc'.
Restrições de caracteres especiais: As expressões de parâmetro não podem conter espaços ou o sinal de igual (=).
Uso
Defina a lógica de atribuição de um parâmetro de agendamento especificando um nome de parâmetro e um valor de parâmetro na seção . Após definir o parâmetro, referencie-o no código usando a sintaxe ${parameter name}. Para instruções detalhadas, consulte Configurar e usar parâmetros de agendamento.
-
Use os parâmetros integrados do sistema
$bizdatee$cyctimepara representar a data de negócio e a hora agendada. Esses parâmetros resolvem para os seguintes valores:$bizdate=${yyyymmdd}-
$cyctime=$[yyyymmddhh24miss]

Os exemplos anteriores mostram as definições de parâmetro para $bizdate (resolvendo para ${yyyymmdd} ) e $cyctime (resolvendo para $[yyyymmddhh24miss] ), além dos resultados de visualização quando a data de negócio é 2025-10-16.
Caso os valores padrão de hora base não atendam às suas necessidades, use as sintaxes
${...}e$[...]para transformar as duas horas base em parâmetros de tempo personalizados.
Parâmetros de tempo personalizados
O DataWorks permite recuperar a data de negócio e a hora de agendamento usando os formatos ${...} e $[...], respectivamente. Esses formatos possibilitam a transformação de valores de tempo para atender aos requisitos de negócio. Os exemplos a seguir consideram um nó agendado para execução diária às 02:30:45, com data de negócio 20251031. As horas de linha de base são:
Data de negócio: O valor de ${yyyymmdd} é 20251031.
Hora de agendamento: O valor de $[yyyymmddhh24miss] é 20251101023045.
Principais diferenças entre ${...} e $[...]
Os formatos ${...} e $[...] diferem em suas linhas de base de tempo e capacidades de cálculo. Misturá-los pode causar erros nos dados.
|
Comparação |
${...} (Data de negócio) |
$[...] (Hora agendada) |
|
Linha de base de tempo |
Data de negócio (T-1) |
Hora agendada (T) |
|
Precisão de tempo |
Dia (ano, mês, dia) |
Segundo (ano, mês, dia, hora, minuto, segundo) |
|
Deslocamentos suportados |
Suporta cálculos de deslocamento para ano, mês, semana e dia. |
Suporta cálculos de deslocamento para dia, hora e minuto. |
|
Limitações principais |
Não suporta formatação ou cálculos de deslocamento para unidades de tempo menores, como horas, minutos ou segundos. |
Deslocamentos diretos de ano ou mês usando sintaxes como |
|
Parâmetro de sistema equivalente |
|
|
Formatação de tempo
Use os formatos ${...} ou $[...] para gerar parâmetros de tempo. Combine códigos de formato como yyyy, yy, mm e dd para gerar datas N anos, meses ou dias antes ou depois da data de negócio.
|
Código |
Descrição |
|
|
||
|
Exemplo |
Resultado |
Exemplo |
Resultado |
||
|
|
Ano com 4 dígitos |
|
|
|
|
|
|
Mês com 2 dígitos |
|
|
|
|
|
|
Dia com 2 dígitos |
|
|
|
|
|
|
Hora no formato de 24 horas |
Não suportado (precisão de nível de dia) |
- |
|
|
|
|
Hora no formato de 12 horas |
- |
|
|
|
|
|
Minuto |
- |
|
|
|
|
|
Segundo |
- |
|
|
|
|
|
Ano e mês |
|
|
|
|
|
|
Data formatada com hifens |
|
|
|
|
|
|
Data e hora formatadas com hifens e dois pontos |
Não suportado (precisão de nível de dia) |
- |
É possível obter esse formato usando concatenação de strings. Consulte Concatenação de strings: Caso 2. |
|
Cálculo de deslocamento
O cálculo de deslocamento permite adicionar ou subtrair tempo de uma data de negócio ou hora de agendamento. Aplique deslocamentos de N anos, meses, dias, horas ou minutos em relação à linha de base de tempo. Deslocamentos de hora e minuto são suportados apenas para a hora de agendamento. As capacidades de deslocamento de ${...} e $[...] diferem porque suportam níveis distintos de precisão de tempo.
-
Cálculo de deslocamento de ${...}
-
Capacidade principal: Suporta deslocamentos inteiros para anos, meses, semanas e dias.
ImportanteDeslocamentos de horas e minutos não são suportados. Por exemplo, ${yyyy-mm-dd-1/24} é uma sintaxe inválida.
-
Sintaxe: ${<time_format><±N>}**, onde a unidade de N é a menor unidade no formato, como
yyyymmouyyyymmdd.**Requisito
Unidade de deslocamento
Sintaxe
Exemplo
N anos antes/depois
Ano
${yyyy±N}ou${yy±N}Obter o ano anterior:
${yyyy-1}N meses antes/depois
Mês
${yyyymm±N}Obter o mês anterior:
${yyyymm-1}N semanas antes/depois
Semana
${yyyymmdd±7*N}Obter a semana anterior:
${yyyymmdd-7*1}N dias antes/depois
Dia
${yyyymmdd±N}Obter o dia anterior:
${yyyymmdd-1}
-
-
Cálculo de deslocamento de $[...]
-
Capacidade principal: Suporta deslocamentos fracionários para dias, horas e minutos.
ImportanteO formato $[...] não aceita expressões como
$[yyyy-N]ou$[mm-N]para recuperar datas de N anos ou meses atrás. Para realizar deslocamentos de ano ou mês, use obrigatoriamente a funçãoadd_months. -
Sintaxe: $[<time_format><±N>]** , onde N representa uma fração de um dia: use
N/24para um deslocamento de N horas eN/24/60para um deslocamento de N minutos.**Requisito
Unidade de deslocamento
Sintaxe
Exemplo
N anos antes/depois
Ano
N anos depois:
$[add_months(yyyymmdd,12N)]
N anos antes:$[add_months(yyyymmdd,-12N)]Obter o ano anterior:
$[add_months(yyyymmdd,-12)]N meses antes/depois
Mês
N meses depois:
$[add_months(yyyymmdd,N)]
N meses antes:$[add_months(yyyymmdd,-N)]
<......Obter o mês anterior:
$[add_months(yyyymmdd,-1)]N semanas antes/depois
Semana
$[yyyymmdd±7*N]Obter a semana anterior:
$[yyyymmdd-7*1]N dias antes/depois
Dia
$[yyyymmdd±N]Obter o dia anterior (ontem):
$[yyyymmdd-1]N horas antes/depois
Hora
Formatos disponíveis:
-
$[hh24miss±N/24],$[hh24±N/24] -
$[<custom_time_format>±N/24]
Obter a hora anterior em diferentes formatos:
-
Mês:
$[mm-1/24] -
Ano:
$[yyyy-1/24] -
Ano e mês:
$[yyyymm-1/24] -
Ano, mês e dia:
$[yyyymmdd-1/24] -
Dia anterior e hora anterior:
$[yyyymmdd-1-1/24]
N minutos antes/depois
Minuto
Formatos disponíveis:
-
$[hh24miss±N/24/60] -
$[yyyymmddhh24miss±N/24/60] -
$[mi±N/24/60] -
$[<custom_time_format>±N/24/60]
Obter o horário 15 minutos antes da hora agendada em diferentes formatos:
-
$[yyyy-15/24/60] -
$[yyyymm-15/24/60] -
$[yyyymmdd-15/24/60] -
$[hh24-15/24/60] -
$[mi-15/24/60]
Deslocamento combinado
Dia + Hora
$[yyyymmdd±N±M/24], onde N é o deslocamento de dias e M é o deslocamento de horas.Exemplo: Obter a hora do dia anterior e da hora anterior →
$[yyyymmdd-1-1/24]NotaTratamento de mudança de dia: Deslocamentos de horas e minutos podem resultar em um horário que cruza o limite de um dia. Para detalhes sobre como lidar com isso, consulte Como tratar a substituição de parâmetros entre dias ao deslocar uma hora.
Calibração de fim de mês: Ao aplicar um deslocamento de mês a uma data de fim de mês, se o mês alvo tiver menos dias, o resultado será automaticamente calibrado para o último dia desse mês. Por exemplo, subtrair um mês de 2025-03-31 retorna 2025-02-28, pois fevereiro não tem 31 dias.
-
-
Transformação secundária usando funções do mecanismo
Se os recursos integrados de formatação e deslocamento não conseguirem produzir o valor exato necessário (por exemplo, o último dia do mês anterior), aplique uma transformação secundária usando as funções do mecanismo do nó ou um nó de atribuição.
Consulte: Cenários típicos para processamento secundário de valores de retorno de parâmetros de agendamento .
Concatenação de strings
Use a concatenação de strings para construir strings de data estruturadas não suportadas pela sintaxe integrada. Esse método combina uma parte da data gerada por um parâmetro de agendamento com uma string constante.
Caso 1: Obter dinamicamente o primeiro dia de cada mês
Cenário: Você precisa de uma string que represente o primeiro dia do mês atual no formato
yyyymm01, independentemente do dia em que a tarefa é executada.-
Implementação:
Extraia a parte do ano e mês: Use
${yyyymm}para obter o ano e o mês da data de negócio atual. Por exemplo, se a data de negócio for20231027, o resultado será202310.Concatene o ano e mês extraídos com a string constante
'01'.Chamada do parâmetro:
first_day_of_month=${yyyymm}01
Resultado: Quando a tarefa é executada,
${first_day_of_month}é substituído por20231001.
Caso 2: Gerar um carimbo de data/hora no formato yyyy-mm-dd hh24:mi:ss**
Cenário: Você precisa gerar um carimbo de data/hora no formato yyyy-mm-dd hh24:mi:ss, como
2023-11-01 02:30:45.-
Implementação:
Defina dois parâmetros,
datetime1edatetime2. Configure-os da seguinte forma:datetime1=$[yyyy-mm-dd]edatetime2=$[hh24:mi:ss].Concatene os parâmetros
datetime1edatetime2, separados por um espaço.Chamada do parâmetro: pt=
${datetime1}${datetime2}
Resultado: Quando a tarefa é executada,
${datetime1}${datetime2}é substituído por2023-11-01 02:30:45.
Parâmetros de sistema integrados
O DataWorks fornece os seguintes parâmetros de sistema integrados. Devido aos seus formatos de tempo fixos e flexibilidade limitada, recomenda-se o uso de parâmetros de tempo personalizados.
|
Parâmetro |
Descrição |
|
$bizdate |
A data de negócio no formato Geralmente assume como padrão o dia anterior à hora de execução agendada da tarefa. |
|
$cyctime |
A hora agendada no formato |
|
$gmtdate |
A data atual no formato Assume como padrão a data atual. Para um backfill de dados, a data é |
|
$bizmonth |
O mês de negócio no formato
|
|
$jobid |
O ID do fluxo de trabalho que contém a tarefa. |
|
$nodeid |
O ID do nó. |
|
$taskid |
O ID da instância gerada pelo nó. |
Exemplos de substituição de parâmetros
O valor de substituição de um parâmetro de agendamento é determinado no momento da criação da instância e não é afetado pela hora real de início.
Cenário 1: agendamento normal
No agendamento normal, a substituição de parâmetros baseia-se em duas linhas de base de tempo: a data de negócio e a hora de agendamento.
${...}(data de negócio): O valor deriva da data de negócio da instância.$[...](hora de agendamento): O valor deriva da hora de agendamento da instância.
Por exemplo, considere uma tarefa diária chamada A, agendada para execução às 00:00 com os seguintes parâmetros:
yesterday=${yyyymmdd}today=$[yyyymmddhh24miss]
A tabela a seguir mostra como esses parâmetros são substituídos para uma instância específica:
|
Hora agendada |
Data de negócio |
yesterday=${yyyymmdd} |
today=$[yyyymmddhh24miss] |
|
|
|
|
|
Cenário 2: backfill de dados
Durante um backfill de dados, a lógica de substituição de parâmetros muda com base na data de negócio selecionada. Isso afeta especialmente os parâmetros que dependem da hora de agendamento.
${...}(data de negócio): A linha de base é a data de negócio selecionada manualmente.$[...](hora de agendamento): A linha de base é a data de negócio selecionada manualmente + 1 dia.
Por exemplo, se você fizer o backfill da tarefa A com 2025-03-15 como data de negócio:
|
Data de negócio selecionada |
yesterday=${yyyymmdd} |
today=$[yyyymmddhh24miss] |
|
|
|
|
Perguntas frequentes
Para dúvidas sobre parâmetros de agendamento, consulte Perguntas frequentes sobre parâmetros de agendamento.