Oi Pablo, tudo bem?
Para pegar a seguinte segunda-feira se o cálculo resultar em sábado ou domingo, você pode usar a função CASE
combinada com EXTRACT
para verificar o dia da semana. Você pode tentar o seguinte código:
SELECT
CASE
WHEN EXTRACT(DAYOFWEEK FROM sua_data) = 7 THEN DATE_ADD(sua_data, INTERVAL 2 DAY) -- Se for sábado
WHEN EXTRACT(DAYOFWEEK FROM sua_data) = 1 THEN DATE_ADD(sua_data, INTERVAL 1 DAY) -- Se for domingo
ELSE sua_data
END AS primeiro_dia_util
FROM sua_tabela
Para pular um dia se cair em feriado, a sua ideia de ter uma tabela com os feriados é ótima!Mas, ielizmente, o BigQuery não possui uma função incorporada que já saiba os feriados. Você precisará criar uma tabela de feriados e então fazer uma junção com a sua tabela de datas para verificar se a data calculada é um feriado.
Espero ter ajudado.
Qualquer dúvida, não hesite em compartilhar no fórum.
Abraços!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado