Todos os produtos
Search
Central de documentação

DataWorks:Cenários típicos para pós-processamento de valores de retorno de parâmetros de agendamento

Última atualização: Jun 27, 2026

Em tarefas agendadas, quando o formato de hora padrão retornado pelos parâmetros de agendamento não atende a necessidades de negócios complexas (como obter o último dia de um mês, de um trimestre ou aplicar um deslocamento de tempo personalizado), utilize funções do mecanismo para pós-processar os valores de retorno e gerar o formato de hora necessário. É possível transformar os valores diretamente em um nó de computação ou pré-processá-los com um nó de atribuição.

Cenário de negócios

No desenvolvimento de dados e em pipelines de ETL, o agendamento de tarefas frequentemente depende de dimensões temporais específicas — por exemplo, liquidação mensal baseada em um ciclo financeiro (último dia do mês anterior) ou sincronização incremental de dados baseada em janelas de tempo horárias ou no nível de minutos. Como os parâmetros de agendamento retornam um formato de hora padrão por definição e não produzem diretamente essas strings de tempo complexas e não padronizadas, é necessário pós-processar seus valores de retorno.

Visão geral da solução

Existem duas abordagens principais para o pós-processamento de parâmetros de agendamento: processá-los diretamente dentro de um nó que suporte execução de funções (como um nó ODPS SQL) ou pré-processá-los com um nó de atribuição e passar o resultado para os nós downstream. A escolha depende se o nó de destino suporta a execução de funções em seu código.

  • Direct Processing: Em nós que suportam execução de funções, como ODPS SQL, utilize funções do mecanismo dentro do código para transformar os valores de retorno dos parâmetros de agendamento.

  • Indirect Processing: Quando o nó de destino (por exemplo, certos nós de sincronização em lote) não suporta execução de funções em seu código, adicione um nó de atribuição upstream. O nó de atribuição realiza a transformação via função e passa sua saída para o nó downstream como um parâmetro de contexto.

Etapas de implementação

Em todos os cenários a seguir, considere que o horário agendado (CYCTIME) da instância da tarefa é 20250727000500.

Cenário 1: Processar valores de retorno diretamente em um nó SQL

Tomando o nó ODPS SQL como exemplo, esse tipo de nó permite usar funções MaxCompute SQL diretamente nas instruções SQL para processar parâmetros de agendamento. Para outros nós SQL, consulte os tipos de função suportados pelos respectivos mecanismos.

Obter o último dia do mês anterior

Obtenha o último dia do mês anterior no formato aaaammdd. Esse formato é comum para particionamento ou liquidação de dados mensais.

  1. Configuração de parâmetros: Configure um parâmetro de agendamento para obter o ano e o mês do horário agendado atual.

    last_month=$[yyyy-mm]

  2. Lógica de processamento: No código ODPS SQL, primeiro construa o primeiro dia do mês atual. Em seguida, use a função DATEADD para subtrair um dia e obter o último dia do mês anterior, e utilize a função REPLACE para remover o delimitador.

    SELECT REPLACE(DATEADD(date'${last_month}-01',-1,'dd'),'-','');
  3. Exemplo: O valor do parâmetro last_month é 2025-07. Após o processamento pela função, o valor de retorno é 20250630.

Obter o trimestre atual

Calcule o trimestre (1, 2, 3 ou 4) ao qual pertence o mês do horário agendado.

  1. Configuração de parâmetros: Configure um parâmetro de agendamento para obter o mês.

    month=$[mm]

  2. Lógica de processamento: No código ODPS SQL, divida o mês por 3 e arredonde para cima para calcular o trimestre.

    SELECT CEIL(CAST('${month}' AS INT)/3);
  3. Exemplo: O valor do parâmetro month é 07. Após o processamento pela função, o valor de retorno é 3.

Obter componentes de tempo 15 minutos antes do horário agendado

Em cenários que exigem pontos temporais precisos para fatiamento de dados, obtenha qualquer deslocamento de tempo relativo ao horário agendado.

  1. Configuração de parâmetros: Utilize a operação matemática -15/24/60 nos parâmetros de agendamento para obter diretamente o ano, mês, dia, hora e minuto correspondentes a 15 minutos antes do horário agendado.

    year=$[yyyy-15/24/60]

    month=$[yyyymm-15/24/60]

    day=$[yyyymmdd-15/24/60]

    hour=$[hh24-15/24/60]

    mi=$[mi-15/24/60]

  2. Lógica de processamento: Referencie esses parâmetros pré-calculados diretamente no SQL.

    select 'year=${year} month=${month} day=${day} hour=${hour} mi=${mi}';
  3. Exemplo: Após o cálculo que cruza o limite do dia, os valores de retorno são year=2025 month=202507 day=20250726 hour=23 mi=50.

Cenário 2: Gerar intervalos de tempo para sincronização incremental

Gere parâmetros de tempo para tarefas de sincronização em lote que exigem um intervalo de tempo especificado. Considere que estes cenários requerem o formato de tempo yyyymmddhh24miss e um intervalo exclusivo à esquerda e inclusivo à direita.

Intervalo de agendamento de 1 dia

Obtenha o intervalo de tempo das 00:00:00 de ontem até as 00:00:00 de hoje.

  1. Configuração de parâmetros: Obtenha as datas de ontem e de hoje separadamente.

    beginDateTime=$[yyyymmdd-1]

    endDateTime=$[yyyymmdd]

  2. Lógica de processamento: Concatene strings na cláusula WHERE do filtro de dados para acrescentar as partes de hora, minuto e segundo.

    event_time >= '${beginDateTime}000000' AND event_time < '${endDateTime}000000'
  3. Exemplo: Os valores de retorno são hora inicial 20250726000000 e hora final 20250727000000.

Intervalo de agendamento de 1 hora

Obtenha o intervalo de tempo dos 00:00 da hora anterior até os 00:00 da hora atual.

  1. Configuração de parâmetros: Use operações matemáticas para obter a hora anterior e a hora atual.

    beginDateTime=$[yyyymmddhh24-1/24]

    endDateTime=$[yyyymmddhh24]

  2. Lógica de processamento: Concatene strings na cláusula WHERE do filtro de dados para acrescentar as partes de minuto e segundo.

    event_time >= '${beginDateTime}0000' AND event_time < '${endDateTime}0000'
  3. Exemplo: Os valores de retorno são hora inicial 20250726230000 e hora final 20250727000000.

Cenário 3: Pré-processar parâmetros para nós downstream usando um nó de atribuição

Quando o nó de destino (por exemplo, certos nós de sincronização em lote) não consegue usar funções diretamente para processar parâmetros de agendamento, utilize um nó de atribuição para o pré-processamento. Por exemplo, quando uma tarefa de sincronização em lote precisa usar uma coluna de timestamp para sincronização incremental, siga estas etapas:

  1. Crie um nó de atribuição.

  2. No nó de atribuição, utilize uma função do mecanismo (como unix_timestamp) para converter um parâmetro de agendamento padrão (como $[yyyymmddhh24miss]) para o formato de timestamp.

  3. Passe a saída do nó de atribuição (o timestamp convertido) como parâmetro de entrada para o nó de sincronização em lote downstream. Para obter informações sobre como configurar parâmetros de entrada e saída, consulte Configurar parâmetros de entrada e saída.