segunda-feira, 22 de março de 2021

Diferenças entre CALCULATEDTABLE e FILTER em DAX

Qual é verdadeira diferença entre CALCULATETABLE e FILTER se ambas retornam um tabela e aplicam uma expressão como filtro? A resposta é depende, depende da existência ou não de contexto de filtro.

Se não houver contexto de filtro elas funcionarão de forma semelhante, retornam 99 linhas com os produtos da cor vermelha.

  





Mas quanto elas são avaliadas em um contexto de filtro onde uma medida está sendo avaliada a sequencia de execução é diferente, o que muda o resultado.

No caso da CALCULATEDTABLE, primeiramente o filtro é aplicado e depois a tabela do primeiro argumento é criada mantendo o contexto de filtro.
















No caso de filter isso não acontece. Filter primeiramente cria a table e depois aplica o filtro. Isso faz com que o resultado seja diferente.






 








Outra diferença é que FILTER aceita expressões de filtro em medidas e CALCULATEDTABLE não.









Os códigos deste exemplo estão em: Dax code




quarta-feira, 17 de março de 2021

Portfólio de projetos públicos

Neste post eu trago exemplos de projetos realizados utilizando o conjunto de ferramentas de BI da Microsoft.


Projeto OCID

Este projeto apresenta estatísticas da área de direitos humanos do estado do ES. 

Tecnologias utilizadas:

Fonte de dados: SQL Server

ETL: Power Query

Modelo: Power BI

Painel: Power BI

















Painel Covid19 Espírito Santo

Este projeto foi realizado com o objetivo de dar transparência aos dados da evolução da pandemia no estado.

Tecnologias utilizadas:

Fonte de dados: MySql, Sql Server, .csv, MinIO

Data warehouse: SQL Server

ETL: Integration Services, Power Query

Modelo: Power BI

Painel: Power BI


















Painel de Vacinação

Este projeto foi desenvolvido para dar transparência aos dados de distribuição de doses para a população dos grupos prioritários.

















Anuário 2020 Rede Gazeta

Este projeto foi desenvolvido divulgar dos principais indicadores econômicos do estado, como parte do já tradicional conjunto de grandes reportagens sobre o panorama econômico do estado. O layout de página foi restrito o que fez com que fosse necessário trabalhar muito com calculation groups para alternar entre a dezenas de medidas nos mesmos mapas e tabelas.
























Painel Chamados

Este é um exemplo de um painel para gestão de serviços de TI com os principais indicadores de prazos de atendimentos, categorias, grupos, etc..



















Painel de Telefonia:

Exemplo de painel de telefonia com as principais estatísticas de quantidades de atendimentos, abandonos e tempos médios.




IASES Adolescentes

Perfil de entradas e saídas

Observatorio digital da socioeducação

Neste projeto, são apresentadas diversas estatísticas socioeconômicas do perfil dos menores acautelados e a evolução histórica do fluxo da demanda de ressocialização.









terça-feira, 9 de março de 2021

Colunas Calculadas Para Tabela Calendário: Dias desde o início do ano, Dias até o final do ano, Dias desde o início do trimestre e dias até o final do trimestre

Um exemplo de como criar esse tipo de coluna calculada para incrementar a tabela de calendário.

Dias desde o início do ano e Dias até o fim do ano:

"Dias Desde o Início do Ano", DATEDIFF ( STARTOFYEAR ( 'Date'[Date] ), 'Date'[Date], DAY ) + 1

A função STARTOFYEAR retorna a data que representa o primeiro dia do ano do contexto de linha da coluna, com isso, usando a função DATEDIFF conseguimos obter a diferença. Como o primeiro valor é zero, precisamos adicionar 1.

Para fazer a contagem reversa seguimos a mesma lógica, só que desta vez usamos a função ENDOFYEAR.

"Dias Até o fim do Ano", DATEDIFF ( 'Date'[Date], ENDOFYEAR ( 'Date'[Date] ), DAY ),

Para fazer fazer as colunas de inicio e fim do trimestre, usamos as funções STARTOFQUARTER e ENDOFQUARTER.

Veja como ficou o resultado final:

https://dax.do/nC0pJNKP7q6Hj0/
Link para o código: https://dax.do/nC0pJNKP7q6Hj0/


KEEPFILTERS: Removendo repetições do total retornado por uma CALCULATE

Quando um filtro é aplicado em um CALCULATE por padrão ele sobrescreve/faz um merge com o contexto de filtro do painel, com isso, para garantir que o filtro do painel seja mantido a função KEEPFILTERS é usada.

Se tem um contexto de filtro na CALCULATE e o mesmo atributo aplica um filtro no visual por padrão o que vale é da CALCULATE mas KEEPFILTERS inverte isso.

Faz um merge dos filtros da media com os filtros dos visuais e não sobrescreve com o filtro da calculate.

Sem usar KEEPFILTERS o resultado se repete na coluna utilizada como filtro no CALCULATE.


Usando KEEPFILTERS o filtro continua sendo aplicado mas quando encontra a coluna usada no filtro ele volta a incluir ela como filtro. Ou seja, mantém o filtro. É como se ele adicionasse o filtro que foi removido quando a função calculate foi usada.