Buscar K
Aparência
Aparência
Um agendamento executa flows de forma recorrente. Ele vive em schedules/<slug>--<id>.yaml.
lumo new schedule --name "Carga Diária"Ligue o autocomplete no editor colando esta linha no topo do arquivo:
# yaml-language-server: $schema=https://docs.horusbi.com.br/schemas/v2/schedule.schema.jsonAntes de agendar: todos os flows precisam estar publicados num dw-desk, e todos precisam estar no mesmo agente. O agendamento herda o agente dos flows e não tem campo de agente próprio.
# ── header ────────────────────────────────────────────────
id: integer # obrigatório, >= 1
kind: schedule # obrigatório, literal "schedule"
lumo: v2 # obrigatório, literal "v2"
tenantId: integer # obrigatório, >= 1
---
# ── body ──────────────────────────────────────────────────
nome: string # obrigatório, mínimo 1 caractere
ativo: boolean # obrigatório
timezone: string # obrigatório, nome IANA (ex: America/Sao_Paulo)
tags: [string]
flows: # obrigatório. executados em sequência
- flow_etl_id: integer # obrigatório
context: string # obrigatório: Total | Incremental | Temporal | Temporal:Days:<n>
triggers: # obrigatório. quando o agendamento dispara
# Hour / Minute: a cada N unidades, dentro de uma janela diária
- type: Hour # Hour | Minute. Minute exige schedulingGranularity=minutes no tenant
period: integer # obrigatório, >= 1
start_when: string # obrigatório, ISO 8601 UTC (ex: 2026-01-01T07:00:00.000Z)
start_time: "HH:MM" # obrigatório, início da janela
end_time: "HH:MM" # obrigatório, fim da janela
# Day: uma vez por dia
- type: Day
start_when: "HH:MM" # obrigatório, hora do dia
# Week: num dia da semana
- type: Week
period: integer # obrigatório, 0=domingo até 6=sábado
start_when: "HH:MM" # obrigatório
# Month: num dia do mês
- type: Month
period: integer # obrigatório, 1 a 31 (dia do mês, não intervalo)
start_when: "HH:MM" # obrigatóriostart_when muda de formato conforme o type. Em Hour e Minute, é um timestamp ISO completo em UTC. Em Day, Week e Month, é apenas a hora do dia, no formato HH:MM.
Em Month, period é o dia do mês, e não um intervalo de meses. O dia 31 é ajustado para o último dia válido nos meses mais curtos.
# schedules/carga-diaria--2478.yaml
# yaml-language-server: $schema=https://docs.horusbi.com.br/schemas/v2/schedule.schema.json
id: 2478
kind: schedule
lumo: v2
tenantId: 853
---
nome: Carga Diária
ativo: true
# Nome IANA, obrigatório. Sem ele, o horário do gatilho fica ambíguo entre
# UTC e local.
timezone: America/Sao_Paulo
# Executados em sequência: o segundo começa quando o primeiro termina.
# Carregue as dimensões antes dos fatos.
flows:
- flow_etl_id: 44547
context: Total # dimensão pequena: apaga tudo e recarrega
- flow_etl_id: 44531
# Recarrega os últimos 31 dias. A tabela precisa ser key_type: unique,
# senão a janela recarregada duplica as linhas a cada execução.
context: Temporal:Days:31
triggers:
# A cada 2 horas, entre 07:00 e 19:00, no fuso acima.
- type: Hour
period: 2
start_when: "2026-01-01T07:00:00.000Z"
start_time: "07:00"
end_time: "19:00"
tags: [producao]id Tipo: integer (>= 1) · Obrigatório: sim
kind Tipo: string · Obrigatório: sim · Valor: schedule
lumo Tipo: string · Obrigatório: sim · Valor: v2
tenantId Tipo: integer (>= 1) · Obrigatório: sim
nome Tipo: string (mínimo 1 caractere) · Obrigatório: sim
Nome do agendamento. Descreva o que ele faz e como carrega, por exemplo Vendas Diário Temporal 7d.
ativo Tipo: boolean · Obrigatório: sim
false desliga o agendamento sem apagá-lo. Equivale a lumo schedule pause.
timezone Tipo: string (mínimo 1 caractere) · Obrigatório: sim
Nome de fuso IANA, como America/Sao_Paulo. Define quando os gatilhos disparam. É obrigatório para não deixar o horário ambíguo entre UTC e local.
flows Tipo: array de objetos · Obrigatório: sim
Flows executados, em sequência. Cada item exige flow_etl_id e context. Veja Especificação: flow do agendamento.
triggers Tipo: array de objetos · Obrigatório: sim
Quando o agendamento dispara. Veja Especificação: trigger.
tags Tipo: array de string · Obrigatório: não · Default: []
Cada item de flows.
flow_etl_id Tipo: integer (>= 1) · Obrigatório: sim
Id do flow. O flow precisa estar publicado num dw-desk.
context Tipo: string · Obrigatório: sim
Como o flow carrega nesta execução.
| Valor | Comportamento |
|---|---|
Total | Apaga tudo e recarrega tudo. |
Incremental | Acrescenta ou atualiza, sem apagar. |
Temporal | Recarrega a janela padrão. |
Temporal:Days:<n> | Recarrega os últimos <n> dias. |
context: Temporal:Days:31Uma janela Temporal recarregada sobre uma tabela key_type: duplicate duplica as linhas a cada execução. Use unique.
Cada item de triggers. As chaves exigidas mudam conforme type.
type Tipo: string · Obrigatório: sim · Valores: Hour, Minute, Day, Week, Month
| Valor | Dispara | Exige |
|---|---|---|
Hour | A cada period horas, dentro da janela. | period, start_when, start_time, end_time |
Minute | A cada period minutos, dentro da janela. | period, start_when, start_time, end_time |
Day | Uma vez por dia. | start_when |
Week | Num dia da semana. | period, start_when |
Month | Num dia do mês. | period, start_when |
Minute só funciona em tenant com schedulingGranularity igual a minutes.
period Tipo: integer · Obrigatório: em Hour, Minute, Week e Month
O significado muda conforme o type.
type | Significado de period | Faixa |
|---|---|---|
Hour | Intervalo em horas. | >= 1 |
Minute | Intervalo em minutos. | >= 1 |
Week | Dia da semana, com 0 igual a domingo. | 0 a 6 |
Month | Dia do mês. | 1 a 31 |
start_when Tipo: string · Obrigatório: sim
Em Hour e Minute, é um timestamp ISO 8601 em UTC, como 2026-01-01T07:00:00.000Z, que marca quando o agendamento passa a valer.
Em Day, Week e Month, é apenas a hora do dia, no formato HH:MM.
start_time Tipo: string HH:MM · Obrigatório: em Hour e Minute
Início da janela diária em que o gatilho pode disparar.
end_time Tipo: string HH:MM · Obrigatório: em Hour e Minute
Fim da janela diária.
| Campo | O que é |
|---|---|
version | Versão do recurso. |
criado_em, criado_por, publicado_em, publicado_por | Auditoria. |