Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

DAX | 🗓️ Calendário Inteligente: Alicerce para Dashboards de Alto Impacto!

DAX | 🗓️ Calendário Inteligente: Alicerce para Dashboards de Alto Impacto!#ProgramaçãoGlobal #PowerBI #DAX #Calendar #Calendário #KPI #Date #Data #UXDesign #BusinessIntelligence #Personalização #Saudação #PowerApps #Experiência do Usuário #DataDrivenDesign #HomePage #LandingPage #DataStorytelling

 Compre OS LIVROS DESTA SÉRIE 


Se você trabalha com Power BI e ainda utiliza tabelas de calendário básicas, está na hora de dar um salto de qualidade nos seus relatórios! 💡 Um calendário bem estruturado é o coração de qualquer dashboard robusto, e com a medida dCalendarioDAX, você pode criar uma tabela de calendário dinâmica, automatizada e repleta de funcionalidades que elevem suas análises a outro nível. 


🌟 Neste artigo, vou compartilhar como essa medida pode transformar seus projetos com exemplos práticos para quem vive e respira Business Intelligence. Vamos mergulhar? 🧠


dCalendarioDAX =

VAR _MenorAno = 

    MINX(

        {

            CALCULATE(MIN(fVendas[Data]), ALL(fVendas)),

            CALCULATE(MIN(fMetas[Data]), ALL(fMetas))

        },

        [Value]

    )

VAR _MaiorAno = 

    CALCULATE(MAX(fVendas[Data]), ALL(fVendas))

VAR _Calendario =

    ADDCOLUMNS(

        CALENDAR(

            DATE(YEAR(_MenorAno), 1, 1),

            DATE(YEAR(_MaiorAno), 12, 31)

        ),

        "Ano", YEAR([Date]),

        "MesNum", MONTH([Date]),

        "MesCurto", FORMAT([Date], "mmm", "pt-BR"),

        "MesAtual", 

            IF(

                FORMAT([Date], "mmm/yy", "pt-BR") = FORMAT(TODAY(), "mmm/yy", "pt-BR"),

                "Mês Atual",

                FORMAT([Date], "mm/yyyy", "pt-BR")

            ),

        "MesNome", FORMAT([Date], "mmmm yyyy", "pt-BR"),

        "MesYYYYMM", FORMAT([Date], "yyyymm"),

        "SemanaNum", WEEKNUM([Date], 21),

        "SemanaTexto", "W" & FORMAT(WEEKNUM([Date], 21), "00"),

        "Dia", DAY([Date]),

        "DiaUtil", 

            IF(

                NOT WEEKDAY([Date], 2) IN {6, 7} && 

                NOT [Date] IN VALUES(dFeriados[Data]),

                1,

                0

            ),

        "DiaFormatado", FORMAT(DAY([Date]), "00"),

        "DiaSemanaNum", WEEKDAY([Date], 2),

        "DiaSemanaNome", FORMAT([Date], "ddd", "pt-BR"),

        "DiaSemanaNomeCompleto", FORMAT([Date], "dddd", "pt-BR"),

        "FlagAteOntem", IF([Date] <= TODAY() - 1, 1, 0),

        "FlagAteMesPassado", 

            IF(

                VALUE(FORMAT([Date], "yyyymm")) < VALUE(FORMAT(EOMONTH(TODAY(), -1), "yyyymm")),

                1,

                0

            )

    )

RETURN

    _Calendario


Por que um Calendário Inteligente é Essencial? 📆
Um calendário bem projetado não é apenas uma lista de datas. Ele é a base para cálculos complexos, comparações temporais e KPIs dinâmicos que respondem em tempo real. A medida dCalendarioDAX vai além do trivial ao oferecer:
  • ⏳Automação Total: Identifica automaticamente os anos mínimo e máximo com base nos dados das tabelas (Por exemplo: Vendas e Metas), eliminando ajustes manuais.
  • 🗓️ Colunas Personalizadas: Inclui formatos de mês (curto e longo), flags para mês atual e passado, dias úteis (excluindo finais de semana e feriados), e até nomes de dias da semana em português.

  • 📊 Flexibilidade para análises: Permite comparações históricas, cálculos de desempenho por semana, e segmentações por dias úteis com precisão.
Com essa abordagem, você economiza tempo e cria dashboards mais confiáveis, prontos para atender às demandas de negócios dinâmicos. 🚀
Como a Medida dCalendarioDAX Funciona? 🔧
A medida dCalendarioDAX é uma tabela virtual criada em DAX que usa a função CALENDAR como base, mas vai muito além. 
Aqui está o que ela entrega:
🔍 Identificação dinâmica de períodos: Usa MINX e CALCULATE com ALL para buscar a menor data entre as tabelas de Vendas e Metas, garantindo que o calendário comece no ponto certo, mesmo com filtros aplicados.

📈 Colunas úteis para análises:

 

    • MesCurto: Exibe "jan", "fev", etc., ideal para gráficos compactos.

    • MesNome: Formato completo como "janeiro 2025" para relatórios formais.

    • DiaUtil: Retorna 1 para dias úteis (excluindo sábados, domingos e feriados da tabela dFeriados) e 0 para não úteis, perfeito para cálculos de produtividade.

    • FlagAteOntem e FlagAteMesPassado: Facilitam análises de desempenho até o dia anterior ou o último dia do mês passado, ideais para relatórios em tempo real.

🇧🇷 Localização em pt-BR: Todos os formatos de data (meses, dias da semana) são configurados para português do Brasil, garantindo consistência em relatórios locais.

O código foi projetado para ser robusto e escalável, funcionando bem em modelos de dados pequenos ou grandes, sem perda de performance. 💻
Exemplos Práticos de Uso da dCalendarioDAX 📚
Aqui estão alguns cenários práticos onde a dCalendarioDAX brilha:
📅📈Comparação de Vendas Ano a Ano:
  • Use a coluna Ano para criar segmentações que comparam vendas de diferentes anos. Combine com MesNum para análises mês a mês, garantindo que os dados estejam alinhados mesmo com anos incompletos.

Exemplo: Vendas YoY = CALCULATE(SUM(fVendas[Valor]), SAMEPERIODLASTYEAR(dCalendarioDAX[Date])).

🛠️Análise de Dias Úteis para Produtividade:
    • A coluna DiaUtil é perfeita para calcular métricas como "vendas por dia útil" ou "horas trabalhadas".
Exemplo: VendasPorDiaUtil = 
DIVIDE(SUM(fVendas[Valor]),
CALCULATE(SUM(dCalendarioDAX[DiaUtil]), dCalendarioDAX[DiaUtil] = 1)
)

⏱️Relatórios de Desempenho em Tempo Real:
  • Use FlagAteOntem para criar KPIs que mostram o desempenho até o dia anterior, excluindo dados parciais do dia atual.

Exemplo: VendasAteOntem = 
CALCULATE(
      SUM(fVendas[Valor]),
      dCalendarioDAX[FlagAteOntem] = 1)

📆 Segmentação por Semana:
  • Com SemanaNum e SemanaTexto, você pode criar relatórios semanais com facilidade. Por exemplo, um gráfico de barras mostrando vendas por semana:

Exemplo: VendasPorSemana = 
CALCULATE(
SUM(fVendas[Valor]),
ALLEXCEPT(dCalendarioDAX, dCalendarioDAX[SemanaTexto]))


Filtros de Mês Atual 🌟:
  • A coluna MesAtual facilita a criação de visuais que destacam o mês atual em relatórios, como um cartão que exibe "Mês Atual" ou o formato "MM/YYYY" para outros meses.

Como Implementar a dCalendarioDAX no Seu Projeto? 🛠️

Adicione a medida ao modelo:
      • Copie o código da dCalendarioDAX (fornecido anteriormente) e crie uma nova tabela no Power BI usando o menu "Modelagem" > "Nova Tabela".
  1. Relacione com outras tabelas:
      • Conecte a coluna [Date] da dCalendarioDAX às colunas de data em fVendas e fMetas usando relacionamentos 1:* (um para muitos).
  2. Valide a tabela de feriados:
      • Certifique-se de que a tabela dFeriados existe e contém uma coluna [Data] com feriados relevantes. Caso contrário, remova a parte do código que referencia feriados.
  3. Teste as colunas:
      • Crie visuais simples, como tabelas ou gráficos, para verificar se colunas como MesCurto, DiaUtil e FlagAteOntem estão funcionando corretamente.
    1. Personalize conforme necessário:
      • Adicione colunas extras, como trimestres ("Trimestre", "Q" & FORMAT([Date], "Q")) ou feriados específicos, para atender às suas necessidades.

Por que Escolher a dCalendarioDAX? 🌟
A dCalendarioDAX não é apenas um código; é uma solução que reflete boas práticas de Business Intelligence. Ela combina automação, flexibilidade e precisão, permitindo que você foque no que realmente importa: extrair insights valiosos dos dados. 📊 Seja para relatórios financeiros, análises de vendas ou KPIs operacionais, essa medida é um divisor de águas.
Quer levar seus dashboards para o próximo nível? Experimente a dCalendarioDAX e compartilhe seus resultados! 

Criando a tabela de feriados...

Abaixo está o código DAX para criar a tabela de feriados, seguido de explicações e instruções para integração com a medida anterior.

dFeriados =
DATATABLE(
"Data", DATETIME,
{
{DATE(2025, 9, 7)}, -- Independência do Brasil
{DATE(2025, 10, 12)}, -- Nossa Senhora Aparecida
{DATE(2025, 12, 25)}, -- Natal
{DATE(2025, 12, 31)} -- Véspera de Ano Novo
}
)
Explicação do Código
  • Função DATATABLE: Utilizamos DATATABLE para criar uma tabela estática em DAX, especificando a coluna Data com tipo DATETIME e listando as datas dos feriados.

  • Datas dos Feriados:

    • 07/09/2025: Independência do Brasil.
    • 12/10/2025: Nossa Senhora Aparecida.
    • 25/12/2025: Natal.
    • 31/12/2025: Véspera de Ano Novo.

  • Formato: As datas são definidas com a função DATE(ano, mês, dia), garantindo compatibilidade com a coluna [Date] da tabela dCalendarioDAX.

Instruções para Integração com dCalendarioDAX
Criação da Tabela

  • No Power BI, vá até a aba Modelagem, clique em Nova Tabela e insira o código acima para criar a tabela dFeriados.


Relacionamento com dCalendarioDAX

    • A medida dCalendarioDAX já inclui a lógica NOT [Date] IN VALUES(dFeriados[Data]) na coluna DiaUtil. Portanto, não é necessário modificar o código da medida, desde que a tabela de feriados seja nomeada exatamente como dFeriados e tenha uma coluna chamada Data.
    • No modelo de dados, crie um relacionamento entre dCalendarioDAX[Date] e dFeriados[Data] se necessário, embora a lógica VALUES(dFeriados[Data]) já acesse os valores diretamente.

Validação

  • Verifique se a coluna DiaUtil em dCalendarioDAX retorna 0 para as datas 07/09/2025, 12/10/2025, 25/12/2025 e 31/12/2025, além de sábados e domingos, e 1 para os demais dias úteis.
  • Exemplo de teste: Crie uma visualização de tabela no Power BI com dCalendarioDAX[Date] e dCalendarioDAX[DiaUtil] para confirmar que os feriados estão sendo corretamente marcados como não úteis.

Benefícios da Tabela de Feriados
  • Precisão em cálculos de dias úteis: A tabela dFeriados garante que a coluna DiaUtil em dCalendarioDAX exclua feriados específicos, permitindo análises mais precisas, como "vendas por dia útil" ou "horas trabalhadas".
  • Flexibilidade: Você pode facilmente adicionar mais feriados à tabela editando o código DATATABLE, como feriados regionais ou datas futuras.
  • Compatibilidade: A estrutura simples (uma coluna Data) é compatível com a lógica existente em dCalendarioDAX, sem necessidade de ajustes complexos.

Exemplo de Uso CombinadoPara ilustrar como a tabela dFeriados funciona com dCalendarioDAX, você pode criar uma medida para calcular o total de dias úteis em um período:

TotalDiasUteis = 
CALCULATE(
    SUM(dCalendarioDAX[DiaUtil]),
    ALLSELECTED(dCalendarioDAX[Date])
)


Essa medida soma os valores da coluna DiaUtil, que será 1 para dias úteis e 0 para finais de semana e feriados listados em dFeriados. Por exemplo, em setembro de 2025, o dia 07/09/2025 (Independência do Brasil) será marcado como 0, reduzindo a contagem de dias úteis.
Considerações
  • Escalabilidade: Se você precisar incluir feriados de outros anos (ex.: 2026), basta adicionar novas linhas ao DATATABLE, como {DATE(2026, 9, 7)}.
  • Feriados regionais: Para projetos locais, considere adicionar feriados específicos da sua região (ex.: 20/11/2025 para o Dia da Consciência Negra em algumas cidades).
  • Performance: A tabela estática com DATATABLE é altamente eficiente, pois é pequena e não requer cálculos dinâmicos. Para modelos com muitos feriados, considere importar uma tabela de feriados de uma fonte externa (como Excel ou banco de dados) em vez de usar DATATABLE.

Me chama no LinkedIn, no X ou deixe um comentário para trocarmos ideias. 💬 Estou sempre disponível para ajudar a comunidade de BI a crescer e inovar! 🚀


DOE UM CAFÉ:

👉 Não se esqueça de seguir André Bernardes no Linkedin. Clique aqui e me contate via What's App. 

Comente e compartilhe este artigo!

brazilsalesforceeffectiveness@gmail.com


,

Clique na imagem acima para acessar 10 e-Books!


 PUDIM PROJECT 

eBook - PT - PUDIM PROJECT 2024 - Python Volume 01 - Funções Essenciais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 02 - Funções Essenciais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 03 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 04 - Funções para Automatização - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 05 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 06 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 07 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 08 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 09 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes


eBook - PT - PUDIM PROJECT 2024 - Python Volume 10 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes eBook - PT - PUDIM PROJECT 2024 - Python Volume 11 - Automatizando Postagens em Redes e Plataformas Sociais - Série PUDIM PROJECT — André Luiz Bernardes

Nenhum comentário:

Postar um comentário

diHITT - Notícias