Curso
Se você já trabalhou com DAX, sabe que as datas podem se tornar complicadas rapidamente. Você provavelmente vai ficar tranquilo até alguém dizer: “Ei, nossa semana de relatórios começa no sábado” ou “Podemos destacar os fins de semana de forma diferente no painel?” Então, de repente, você se vê mergulhado em tipos de retorno de WEEKDAY(), lógica de deslocamento e tentando explicar por que o Power BI acha que sexta-feira é o fim da semana, quando sua empresa diz o contrário.
A maioria de nós já se deparou com esse problema: você precisa marcar os fins de semana, calcular os dias úteis ou definir limites personalizados para a semana que não correspondem ao calendário padrão. Talvez seu warehouse funcione de domingo a quinta-feira, ou sua equipe financeira queira contar os dias úteis excluindo os fins de semana.
Por padrão, o DAX não lida com isso perfeitamente, mas fornece os blocos de construção para corrigir isso. Neste artigo, vamos ver como marcar fins de semana usando WEEKDAY(), definir limites da semana (por exemplo, sábado a sexta-feira), calcular dias úteis com NETWORKDAYS() ou lógica condicional e usar esses cálculos para gerar métricas que realmente fazem sentido no Power BI.
Entendendo os fins de semana no DAX
Vamos começar com o básico, descobrindo quais dias são fins de semana no seu conjunto de dados. O DAX oferece a função WEEKDAY() para isso, e ela é surpreendentemente flexível quando você entende como o sistema de numeração funciona. Por padrão, WEEKDAY() retorna um número de 1 a 7 que representa o dia da semana para uma determinada data. O segundo argumento controla como esses números são mapeados. A versão que a maioria dos desenvolvedores usa é WEEKDAY(date, 2), que retorna 1 para segunda-feira até 7 para domingo, seguindo o padrão ISO que a maioria dos calendários comerciais usa.
Aqui vai um exemplo rápido:
|
Data |
DIA DA SEMANA(Data, 2) |
Dia |
|
2025-10-13 |
1 |
Segunda-feira |
|
2025-10-14 |
2 |
Terça-feira |
|
2025-10-18 |
6 |
Sábado |
|
2025-10-19 |
7 |
Domingo |
Agora vamos tornar isso útil. Você pode adicionar uma coluna calculada na sua tabela Date para marcar os fins de semana:
IsWeekend =
VAR DayNum = WEEKDAY('Date'[Date], 2)
RETURN IF(DayNum > 5, TRUE(), FALSE())
E aí, o que tá rolando:
-
WEEKDAY('Date'[Date], 2)dá o número do dia (1= segunda-feira, …,7= domingo). -
DayNum > 5identifica sábado (6) e domingo (7). -
A coluna retorna
TRUEpara fins de semana eFALSEpara dias úteis.
Se a sua semana não segue o padrão padrão de segunda a sexta-feira, por exemplo, sua empresa trata sexta-feira e sábado como fins de semana, você pode ajustar a lógica facilmente:
IsWeekend_Custom =
VAR DayNum = WEEKDAY('Date'[Date], 2)
RETURN IF(DayNum IN {5, 6}, TRUE(), FALSE())
Essa mudança de uma linha faz com que seu modelo funcione para calendários operacionais personalizados. Depois de criar essa coluna, solte-a em um visual de tabela simples no Power BI com o campo “ Date ” e veja se os dias do fim de semana estão certinhos.
Como criar limites personalizados para a semana
A maioria dos modelos do Power BI parte do princípio de um calendário de segunda a domingo, mas os relatórios do mundo real raramente seguem isso à risca. Os painéis de controle do varejo, por exemplo, geralmente fecham às sextas-feiras; algumas organizações, em vez disso, programam os ciclos de sábado a sexta-feira. No DAX, você pode criar limites de semana personalizados que combinem com o seu calendário comercial. Vamos ver como fazer isso de forma simples, passo a passo.
Definindo uma semana que termina na sexta-feira
Se a sua semana de trabalho termina na sexta-feira, você pode atribuir a cada data uma data correspondente do fim de semana. A lógica é simples: pegue cada data, descubra o número do dia da semana e avance até chegar à sexta-feira.
Aqui está a fórmula da coluna calculada:
WeekEnd_Friday =
VAR WeekdayIndex = WEEKDAY('Date'[Date], 2) // Monday = 1, Sunday = 7
VAR DaysToFriday = 5 - WeekdayIndex // 5 represents Friday
RETURN
'Date'[Date] + IF(DaysToFriday < 0, DaysToFriday + 7, DaysToFriday)
Eis o que ele faz:
-
WEEKDAY('Date'[Date], 2)mostra o índice dos dias da semana (Monday = 1). -
Você calcula a distância dessa data em relação à sexta-feira.
-
Se já passou a sexta-feira (por exemplo, sábado ou domingo), passa para a sexta-feira seguinte, adicionando 7 dias.
Essa abordagem junta todas as datas entre sábado e sexta-feira na mesma semana, que termina na sexta-feira.
Para conferir:
-
Adicione essa coluna à sua tabela Data.
-
Crie um visual de tabela no Power BI com
DateeWeekEnd_Friday. -
Você vai ver que cada sequência de sábado a sexta-feira corresponde à mesma data do fim de semana.
Definindo uma semana que começa no sábado
Se a sua semana de relatório começar no sábado, você pode juntar a fórmula anterior com uma coluna de início da semana. Você pode fazer isso usando a mesma lógica, mas ao contrário, encontrando o sábado mais recente em relação a cada data.
Aqui está a coluna DAX complementar:
WeekStart_Saturday =
VAR WeekdayIndex = WEEKDAY('Date'[Date], 2) // Monday = 1, Sunday = 7
VAR DaysSinceSaturday = WeekdayIndex - 6 // 6 represents Saturday
RETURN
'Date'[Date] - IF(DaysSinceSaturday < 0, DaysSinceSaturday + 7, DaysSinceSaturday)
Isso funciona quase igual à expressão anterior, mas volta pro sábado anterior.
Você também pode ver exemplos de código mais antigos usando a função ` EARLIER() ` para pegar o contexto da linha atual dentro de uma coluna calculada. Por exemplo:
WeekStart_Saturday =
VAR CurrentDate = EARLIER('Date'[Date])
VAR WeekdayIndex = WEEKDAY(CurrentDate, 2)
VAR DaysSinceSaturday = WeekdayIndex - 6
RETURN
CurrentDate - IF(DaysSinceSaturday < 0, DaysSinceSaturday + 7, DaysSinceSaturday)
O DAX moderno não precisa de um ` EARLIER() ` nesse cenário, já que as colunas calculadas já avaliam linha por linha, mas ainda é útil entender isso para modelos antigos ou quando você está aninhando contextos de linha em iteradores.
Depois de adicionar as duas colunas, tente plotar WeekStart_Saturday e WeekEnd_Friday em um visual de tabela com sua coluna Date. Você vai ver limites semanais claros que seguem o ritmo do seu negócio, e não o calendário padrão.
Depois, você pode usar essas datas de início e fim da semana como chaves de agrupamento em recursos visuais ou como âncoras em medidas, perfeitas para calcular totais por semana útil, comparar o desempenho semana a semana ou alinhar com calendários fiscais não padronizados.
Escolhendo entre colunas e medidas
Agora que você configurou seus limites semanais personalizados, vale a pena decidir como usá-los em seu modelo, como colunas calculadas ou como medidas. Ambos têm seu lugar, e saber quando usar cada um mantém seu modelo do Power BI eficiente e previsível.
Pense nas colunas calculadas como atributos estáticos que você quer dividir ou filtrar. Por exemplo, suas colunas IsWeekend, WeekStart_Saturday ou WeekEnd_Friday descrevem cada data. Eles não dependem de interações ou filtros do usuário; eles só definem o que é cada dia é. Isso faz com que sejam perfeitos para agrupar elementos visuais, definir relações ou criar hierarquias.
Por outro lado, as medidas são cálculos dinâmicos que respondem a filtros, segmentadores e contexto. Se você estiver resumindo ou comparando métricas, por exemplo, contando dias úteis em um intervalo selecionado ou calculando a média de vendas por semana, você vai precisar de uma medida.
Aqui vai uma comparação rápida pra você lembrar:
|
Caso de uso |
Tipo |
Exemplo |
|
Identifique os fins de semana ou os limites da semana |
Coluna calculada |
|
|
Divida os gráficos por intervalos de semanas personalizados |
Coluna calculada |
|
|
Contar os dias úteis no filtro atual |
Medida |
|
|
Comparar o total de vendas entre semanas personalizadas |
Medida |
|
Resumindo:
- Se você precisa do resultado armazenado em cada linha (e que possa ser usado em segmentadores ou filtros), opte por uma coluna.
- Se você precisar de um cálculo que seja atualizado com a interação do usuário, use uma medida.
Calculando dias úteis com NETWORKDAYS()
Depois de definir os limites dos fins de semana e das semanas, o próximo passo é calcular os dias úteis — o número de dias da semana entre duas datas, podendo excluir feriados, se quiser. O Power BI e o DAX facilitam isso com a função NETWORKDAYS(), que apareceu nas versões mais recentes do DAX.
Na sua forma mais simples, a sintaxe fica assim:
NETWORKDAYS(<start_date>, <end_date>[, <weekend>[, <holidays>]])
Veja como cada parâmetro funciona:
-
edefine o seu intervalo. -
é opcional e permite especificar quais dias são considerados fins de semana. -
também é opcional — você pode passar uma coluna ou tabela com datas de feriados para excluí-las da contagem.
Entendendo os códigos de fim de semana
O argumento ` ` usa códigos numéricos para definir quais dias são considerados fins de semana. Aqui estão algumas opções padrão que você provavelmente vai usar:
|
Código |
Dias de fim de semana |
Descrição |
|
1 |
Sábado, Domingo |
Padrão (semana de trabalho ocidental) |
|
7 |
Sexta-feira, sábado |
Comum nos calendários do Oriente Médio |
|
11 |
Só no domingo |
Para fechamentos apenas aos domingos |
|
12 |
Só na segunda-feira |
Para dias de folga apenas às segundas-feiras |
Por exemplo, se sua semana de trabalho vai de domingo a quinta-feira, você usaria o código 7 para os fins de semana de sexta-feira a sábado.
Veja como calcular os dias úteis entre duas colunas no seu modelo:
WorkingDays_Default =
NETWORKDAYS('Sales'[StartDate], 'Sales'[EndDate])
Essa fórmula assume que sábado e domingo são fins de semana. Se a sua empresa segue o fim de semana de sexta a sábado, você pode ajustar assim:
WorkingDays_FriSat =
NETWORKDAYS('Sales'[StartDate], 'Sales'[EndDate], 7)
Sem contar os feriados
Você pode ir além e excluir feriados oficiais que estão guardados numa tabela dedicada Holiday. Digamos que você tem uma tabela com uma coluna chamada “ Holiday[Date] ”. Veja como incluir isso:
WorkingDays_WithHolidays =
NETWORKDAYS(
'Sales'[StartDate],
'Sales'[EndDate],
1,
'Holiday'[Date]
)
Essa configuração garante que os fins de semana e os feriados definidos pela sua organização sejam excluídos da contagem. É uma pequena adição que deixa seus relatórios bem mais precisos, principalmente para planejar a força de trabalho, monitorar SLAs ou painéis operacionais.
Exemplo de caso de uso
Imagina que sua empresa programa os cronogramas dos projetos no Power BI. Cada registro tem um StartDate e um EndDate. Ao adicionar a medida “ WorkingDays_WithHolidays ”, você pode visualizar rapidamente:
- Quantos dias úteis cada projeto levou?
- Quais projetos rolaram nos fins de semana ou feriados?
- Tempo médio de trabalho por departamento ou tipo de projeto.
Para ver isso em ação, coloque essa medida em um visual de tabela junto com Project Name, StartDate e EndDate. Você vai ter logo uma visão mais clara dos prazos com base nos dias úteis reais, e não só nas diferenças de datas.
Aplicações práticas em painéis de negócios
Agora que você já tem dias úteis, sinalizadores de fim de semana e limites de semana personalizados, vamos ver como eles se encaixam nos painéis do Power BI do mundo real. A capacidade de redefinir fins de semana ou semanas fiscais não é só um truque técnico bacana; ela afeta diretamente como as métricas são calculadas, visualizadas e entendidas entre os departamentos.
Prazos para folha de pagamento e planilha de horas trabalhadas
Muitas organizações processam a folha de pagamento em um ciclo fixo de sábado a sexta-feira ou de domingo a sábado. Ao definir os limites da semana no DAX, você pode alinhar os períodos salariais, cálculos de horas extras e entradas na folha de ponto com a semana de trabalho exata que seu sistema de RH usa. Por exemplo, você pode calcular o total de horas trabalhadas ou turnos concluídos por semana personalizada, garantindo que os relatórios de folha de pagamento estejam perfeitamente alinhados com os horários internos, em vez do calendário padrão de segunda a domingo.
KPIs operacionais e monitoramento de serviços
As equipes de operações e logística costumam medir KPIs como tempo de entrega ou resolução de incidentes usando só os dias úteis. Usar o NETWORKDAYS() garante que essas métricas reflitam a capacidade real dos negócios, e não os fins de semana, quando nada acontece.
Combinar seus cálculos do dia de trabalho com as colunas “ WeekStart_Saturday ” (Semana de trabalho) ou “ WeekEnd_Friday ” (Semana de trabalho) permite agrupar os dados pela semana operacional exata que a gerência acompanha nas reuniões e relatórios.
Desempenho no varejo e nas vendas
Os varejistas raramente seguem as semanas do calendário. Muitos preferem o sábado ao invés da sexta-feira para capturar todo o período de vendas do fim de semana em um único bloco de relatórios consistente. Ao modelar sua tabela de datas com base nessa programação, as tendências de vendas do fim de semana ficam intactas dentro da mesma semana, tornando as comparações entre fins de semana significativas. Esse pequeno ajuste pode evitar imagens distorcidas “semana a semana” e fornecer médias móveis mais precisas.
Semanas fiscais personalizadas e previsões
Algumas equipes financeiras trabalham com semanas fiscais que começam no meio da semana ou seguem um padrão contábil 4-4-5. Seus limites semanais personalizados podem ser facilmente inseridos nisso.Quando sua tabela de datas tiver as colunas WeekStart e WeekEnd, medidas como reconhecimento de receita, acompanhamento de despesas ou previsões podem ser agregadas de forma consistente, não importa o quão fora do padrão seja o seu calendário fiscal.
Médias móveis com base nos dias úteis
Ao calcular médias móveis, especialmente para KPIs como vendas diárias ou taxas de produção, é melhor basear o cálculo em dias úteis em vez de dias corridos.
Por exemplo, se os fins de semana forem excluídos usando o sinalizador IsWeekend, uma média móvel de 7 dias refletirá verdadeiramente uma semana útil de atividade, sem quedas inflacionadas ou enganosas em dias não úteis.
Resumindo, as definições personalizadas de semana e a lógica de dias úteis aproximam seus painéis do Power BI de como sua empresa realmente funciona. Seja para acompanhar prazos de folha de pagamento, prazos de entrega ou picos de vendas nos finais de semana, esses padrões DAX deixam suas informações mais claras, justas e muito mais úteis.
Pontos importantes a lembrar
Antes de encerrar, vamos resumir os principais pontos para que você possa aplicar essas técnicas DAX de forma eficaz em seus projetos do Power BI.
-
Use colunas calculadas para classificação por linha: Quando você precisa rotular cada data, como marcar fins de semana, definir limites semanais ou categorizar dias úteis, as colunas calculadas são a melhor opção. Eles oferecem atributos estáticos que funcionam perfeitamente em segmentadores, filtros e relações em todo o seu modelo.
-
Use o `
WEEKDAY()` com cuidado, com o tipo de retorno certo: Lembre-se de queWEEKDAY(date, 2)começana segunda-feira (1) e termina no domingo (7). Ajustar esse parâmetro ajuda você a alinhar seus cálculos com os padrões regionais ou organizacionais da semana de trabalho. Sempre dá uma conferida no tipo de retorno. É uma das causas mais comuns de erros off-by-one na lógica temporal do DAX. -
NETWORKDAYS()é a sua melhor opção para excluir fins de semana e feriados: Essa função simplifica os cálculos dos dias úteis, poupando você de filtros de data complicados ou loops manuais. Combine isso com o código de fim de semana da sua empresa e uma tabela de feriados para obter contagens precisas que refletem os dias úteis reais, e não apenas as lacunas do calendário.
Dominando esses fundamentos, estruturas personalizadas de semanas, lógica cuidadosa dos dias da semana e contagens precisas de dias úteis, você vai trazer mais precisão e flexibilidade para cada painel do Power BI que criar. Da próxima vez que você estiver configurando um modelo de data ou alinhando relatórios com calendários comerciais, esses padrões DAX devem estar no topo do seu kit de ferramentas.
Erros comuns a evitar
Mesmo desenvolvedores experientes do Power BI podem se deparar com armadilhas sutis ao trabalhar com lógica de data e semana no DAX. Aqui estão algumas questões que vale a pena ficar de olho:
Misturando citações em comparações de texto
O DAX diferencia aspas simples (') e duplas ("), e usar a errada pode bagunçar sua lógica, principalmente quando você está comparando valores de texto, tipo nomes de dias ou bandeiras. Por exemplo:
IsWeekend = IF(WEEKDAY('Date'[Date], 2) > 5, "Weekend", "Weekday")
Sempre use aspas duplas para strings de texto dentro de funções.
As aspas simples são usadas só para referências a tabelas e colunas, tipo 'Date'[Date].
Esquecendo o contexto da linha
Esse é um dos erros conceituais mais comuns. As colunas calculadas avaliam cada linha de forma independente, enquanto as medidas dependem do filtro e do contexto de avaliação. Se você estiver fazendo referência a uma coluna sem agregação em uma medida, ela não vai funcionar como esperado porque não tem contexto de linha. Por exemplo, IF(WEEKDAY('Date'[Date], 2) > 5, TRUE(), FALSE()) funciona como uma coluna calculada, mas se você precisar que ela responda aos filtros de forma dinâmica, vai precisar envolvê-la em um iterador como SUMX() ou usá-la dentro de uma medida que conte ou filtre linhas.
Ignorando fusos horários ou alinhamento de calendários
Quando você usa dados importados com carimbos de data/hora, as funções de data DAX funcionam na parte da data da sua coluna. Se seus dados atravessarem fusos horários ou usarem ajustes UTC, esses indicadores de fim de semana podem mudar de forma inesperada. Sempre limpe e normalize seus campos de data e hora no Power Query antes de aplicar a lógica DAX.
Codificação rígida da lógica do fim de semana
Evite colocar lógicas fixas como “sábado e domingo” diretamente em várias fórmulas. Em vez disso, crie uma variável reutilizável ou uma tabela desconectada que liste os dias de fim de semana da sua organização. Isso facilita a manutenção quando os calendários comerciais mudam.
Detectar esses pequenos problemas logo de cara pode economizar um monte de tempo de depuração depois. Quando tiver dúvidas, use a Visualização de Dados no Power BI para dar uma olhada nos resultados das colunas calculadas, linha por linha. É uma das maneiras mais rápidas de verificar se a lógica DAX está funcionando como deveria antes de transformá-la em visuais ou medidas.
Conclusão
Trabalhar com fins de semana e limites de semana personalizados no DAX não é só uma questão de matemática de datas, mas sim de fazer com que seus modelos do Power BI reflitam como sua empresa realmente funciona. Seja marcando sábados e domingos como dias não úteis, alinhando sua semana fiscal de sábado a sexta-feira ou calculando dias úteis que excluem feriados, o objetivo é o mesmo: precisão e contexto em todos os cálculos.
Você já viu como funções como WEEKDAY() e NETWORKDAYS() ajudam a definir uma lógica de data flexível e como as colunas calculadas e as medidas desempenham suas respectivas funções: uma para a estrutura e a outra para a análise dinâmica. Ao longo do caminho, a gente analisou casos de uso reais, desde cortes de folha de pagamento até calendários de varejo, e aprendeu como evitar armadilhas comuns do DAX, como aspas mal utilizadas ou perda de contexto de linha.
Da próxima vez que você estiver criando um painel do Power BI que lida com datas, pense além do calendário padrão. Personalize sua semana, destaque os fins de semana e trate os dias úteis como as métricas de primeira classe que eles merecem ser. Com esses padrões DAX no seu kit de ferramentas, seus relatórios não vão só mostrar o tempo, mas também a evolução do tempo( ) conforme sua organização o vive.
Torne-se um analista de dados do Power BI
Domine a ferramenta de business intelligence mais popular do mundo.
Escritor técnico especializado em IA, ML e ciência de dados, tornando ideias complexas claras e acessíveis.

