Todos os produtos
Search
Central de documentação

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

Última atualização: Oct 09, 2026

Em tarefas agendadas, os formatos de hora padrão retornados pelos parâmetros de agendamento podem não atender a requisitos de negócios complexos, como obter o fim de um mês ou trimestre, ou aplicar um deslocamento de tempo personalizado. Aplique funções do mecanismo aos valores retornados para gerar o formato de hora necessário. Converta os valores diretamente em um nó de computação ou pré-processe-os em um nó de atribuição.

Cenários de negócios

No desenvolvimento de dados e em processos de ETL, o agendamento frequentemente depende de dimensões temporais específicas. Exemplos incluem liquidações mensais baseadas em períodos fiscais (como o último dia do mês anterior) e sincronização incremental de dados em janelas horárias ou de minutos. Por padrão, os parâmetros de agendamento retornam formatos de hora padrão e não geram diretamente essas strings temporais complexas e fora do padrão; portanto, seus valores retornados exigem pós-processamento.

Soluções

Há duas formas principais de pós-processar parâmetros de agendamento: processá-los diretamente em um nó compatível com funções, como ODPS SQL, ou pré-processá-los em um nó de atribuição e passar os resultados para os nós downstream. A escolha depende da capacidade do nó de destino de executar transformações por função em seu código.

  • Direct processing: Em nós compatíveis com funções, como ODPS SQL, use as funções do mecanismo diretamente no código para converter os valores retornados pelos parâmetros de agendamento.

  • Indirect processing: Se o nó de destino, como alguns nós de sincronização offline, não puder executar transformações por função em seu código, adicione um assignment node upstream. O nó de atribuição executa a conversão e passa sua saída como um parâmetro de contexto para os nós downstream.

Procedimento

Nos cenários a seguir, considere que o horário agendado (CYCTIME) da instância da tarefa seja 20250727000500.

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

Um nó ODPS SQL pode usar funções MaxCompute SQL diretamente nas instruções SQL para processar parâmetros de agendamento. Para outros nós SQL, use as funções compatíveis com os 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 partições mensais ou liquidações.

  1. Configuração de parâmetros: Configure um parâmetro de agendamento para obter o ano e o mês da tarefa agendada 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 DATEADD para subtrair um dia e obter o último dia do mês anterior. Use REPLACE para remover os separadores.

    SELECT REPLACE(DATEADD(date'${last_month}-01',-1,'dd'),'-','');
  3. Exemplo: Se last_month for 2025-07, após o processamento, o resultado será 20250630.

Obter o trimestre atual

Calcule o trimestre (1, 2, 3 ou 4) com base no mês da tarefa agendada.

  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 determinar o trimestre.

    SELECT CEIL(CAST('${month}' AS INT)/3);
  3. Exemplo: Se month for 07, após o processamento, o resultado será 3.

Obter cada componente de tempo 15 minutos antes do horário agendado

Para fatiar dados em um horário preciso, obtenha um tempo com um deslocamento arbitrário em relação ao horário agendado.

  1. Configuração de parâmetros: Use o deslocamento aritmético -15/24/60 nos parâmetros de agendamento para obter o ano, mês, dia, hora e minuto referentes a 15 minutos antes.

    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 calculados diretamente no SQL.

    select 'year=${year} month=${month} day=${day} hour=${hour} mi=${mi}';
  3. Exemplo: Quando o cálculo cruza o limite de um dia, o resultado é year=2025 month=202507 day=20250726 hour=23 mi=50.

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

Gere parâmetros de tempo para uma tarefa de sincronização offline que exija um intervalo específico. Considere que o formato de hora seja yyyymmddhh24miss e que o intervalo seja aberto à esquerda e fechado à direita.

Intervalo de agendamento: Um dia

Obtenha o intervalo entre ontem às 00:00:00 e hoje às 00:00:00.

  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 condição WHERE do filtro de dados para adicionar os componentes de hora, minuto e segundo.

    event_time >= '${beginDateTime}000000' AND event_time < '${endDateTime}000000'
  3. Exemplo: O resultado começa em 20250726000000 e termina em 20250727000000.

Intervalo de agendamento: Uma hora

Obtenha o intervalo entre a hora anterior às 00:00 e a hora atual às 00:00.

  1. Configuração de parâmetros: Use aritmética para obter a hora anterior e a hora atual.

    beginDateTime=$[yyyymmddhh24-1/24]

    endDateTime=$[yyyymmddhh24]

  2. Lógica de processamento: Concatene strings na condição WHERE do filtro de dados para adicionar os componentes de minuto e segundo.

    event_time >= '${beginDateTime}0000' AND event_time < '${endDateTime}0000'
  3. Exemplo: O resultado começa em 20250726230000 e termina em 20250727000000.

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

Se o nó de destino, como alguns nós de sincronização offline, não puder usar funções para processar parâmetros de agendamento diretamente, pré-processe-os em um nó de atribuição. Por exemplo, se uma tarefa de sincronização offline precisar de um campo timestamp para sincronização incremental, siga estas etapas:

  1. Crie um assignment node.

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

  3. Use a saída do nó de atribuição (o timestamp convertido) como parâmetro de entrada do nó de sincronização offline downstream. Para obter informações sobre parâmetros de entrada e saída, consulte: Configure node context.