Breve Explicação

Olá pessoal, como estão?!

Em primeiro lugar gostaria de deixar meu pedido de desculpas por ter sumido uns tempos aqui do blog e ficado sem postar nenhum tipo de conteúdo. Confesso que andava sentido muita falta mas que por um breve período de tempo, era preciso.

O motivo do meu sumiço foi por escolher novos rumos para minha carreira e, pensando por esse lado, precisei me afastar um pouco para aprender algumas habilidades necessárias. E quais habilidades são essas?!

Devido alguns fatores e desejos meus, decidi migrar para o mercado de tráfego pago (anúncios no Google, Facebook e outras plataformas). Então, por estar envolvido nestas questões e aprendendo as novas habilidades, me afastei um pouco. A boa notícia é que não foi para todo sempre!!!

Como tráfego pago e dados caminham juntos, voltei a estudar Power BI e a linguagem DAX e deste modo, estou voltando a postar conteúdo aqui.

Daqui uns dias farei um post mais explicativo a este respeito e detalharei quais os caminhos que este blog irá tomar! A quem volta a acompanhar e aos novos que chegam, sejam MUITO BEM-VINDOS!

NOTA: Como fiquei muito tempo sem tocar no Power BI, estou revisando e refazendo alguns posts. Fiquem ligados!!!!

Introdução – DAX

DAX é uma linguagem de expressão que foi criada a princípio, para o Power Pivot (Excel) e Analysis Services (tabular). A Microsoft vendo o potencial que a linguagem tinha, adotou para o PBI no seu lançamento, se tornando essa linguagem poderosa para análise de dados.

A linguagem DAX, assim como SQL, trabalha com relações entre tabelas.

Dax trabalha com um número menor de relações tabulares e todas as relações são baseadas em Left Join; isso quer dizer que toda expressão que houver entre duas tabelas, tanto os valores correspondentes quanto os não correspondentes, serão retornados no resultado final. Reforçando a importância da boa modelagem dimensional do dataset.

Antes de avançar no post, destaco duas boas práticas para o uso da linguagem, sendo uma para o uso de tabelas e colunas e a outra para medidas:

  • Tabelas e colunas – procure utilizar no seu código este formato: ‘tabela'[coluna] ou tabela[coluna]; evite utilizar somente o nome da coluna.
  • Medidas – para medidas a recomendação é bem similar: [medida1] * [medida2].
EXEMPLO PARA TABELAS
Exemplo para medidas

NOTA: Um gosto pessoal faço mão sempre que crio uma medida é utilizar uma sigla em minúsculo precedendo o nome com duas letras, que são: “MM” ou “MR”; para colunas calculadas utilizo a sigla “CC”.

COLUNAS CALCULADAS E MEDIDAS

O diferencial do Power BI é a facilidade com que criamos medidas e colunas calculadas, todas elas é claro, construídas com fórmulas DAX.

Mas antes de construir esse tipo de estrutura é interessante saber a diferença.

  • As colunas calculadas são colunas criadas dentro do modelo, diferente das outras que são importadas de alguma fonte.
  • As colunas calculadas não podem acessar outras linhas, diminuindo a sua versatilidade e usabilidade. Além, elas consomem mais memória do que as medidas, o que requer uma pontualidade no uso.
  • Outro aspecto importante que deve ser levado em consideração quando for criar uma coluna calculada, é que ela é computada durante o processamento, que é baseado em process time, garantindo melhor performance.

Independente dela ser baseada em process time, o que garante melhor performance, se o seu arquivo pbix acumular uma quantidade muito grande de colunas calculadas não tem process time que garanta rapidez.

Uma dica muito importante é criar um único bloco de comando para a expressões DAX, evitando que seu processo ocorra diversas vezes. É mais rápido quando é um processo único.

Para criar uma coluna calculada, clique em new column, na barra superior e digite sua fórmula.

CRIAÇÃO DA COLUNA CALCULADA

Funções de agregação são permitidas aqui, o problema é que elas se aplicam a toda coluna, mostrando o resultado único em todas as linhas.

UTILIZANDO FUNÇÕES DE AGREGAÇÃO NA COLUNA

As medidas são utilizadas para agregação por ter um resultado mais condizente:

  • Medidas no geral são mais rápidas que colunas calculadas.
  • Não são fixas em tabelas as quais são criadas.
  • Medidas necessitam de um contexto para possuírem sentido.
  • E medidas só podem ser visualizadas quando utilizadas em gráficos.

As medidas podem ser usadas em colunas calculadas e as colunas calculadas podem usar medidas

Medidas consomem bem menos memória e disco.

Medidas criadas:

CRIAÇÃO DE MEDIDAS

Percebam que em uma das medidas utilizei duas colunas calculadas criadas para facilitar o cálculo.

APLICAÇÃO DAS MEDIDAS NO GRÁFICO

Medida não pode ser criada sem uma função de agregação explícita, veja.

RESTRIÇÃO NA CRIAÇÃO DE MEDIDAS – FALTA FUNÇÃO DE AGREGAÇÃO

VARIÁVEIS

Agora que já temos o conceito de coluna calculada e medida vamos entender como as variáveis funcionam dentro do PBI e sua versatilidade para construir expressões com mais performance.

Diferente do SQL por exemplo, onde declaramos uma variável com o uso da função declare, aqui utilizamos simplesmente a declaração VAR.

Variáveis podem receber quaisquer valores ou expressões que desejarem e por esse motivo, são muito importantes para construção de medidas e colunas calculadas, diminuindo a repetição de expressões

Veja essa coluna por exemplo, posso criar uma única coluna calculada abrigando três expressões.

EXEMPLO NO USO DE VARIÁVEIS

E assim, eu chamo essa coluna na minha medida facilitando o cálculo.

Colunas geradas por expressões baseadas em variáveis não podem ser usadas em agregações, não importa qual tipo de cálculo esteja sendo executada.

RESTRIÇÃO NO USO DAS VARIÁVEIS

O lado positivo de se usar variáveis para medidas e colunas é a possibilidade de resultados diferentes dependendo do que se declara o return. Mas tenha cuidado, se esta medida por exemplo, for utilizada em algum dashboard, o resultado pode ser catastrófico!

E talvez o mais importante quando tratamos variáveis em DAX é assumir que não existe variável global, veja neste exemplo.

Na primeira imagem mostro uma medida simples com algumas variáveis criadas para cálculo.

UTILIZANDO VARIÁVEIS COM MEDIDAS PARA CÁLCULOS

Criando uma tabela para teste e tentar adicionando uma coluna calculada para o exemplo, o Power BI reconhecerá a variável LucroLiq.

POWER BI NÃO RECONHECE A VARIÁVEL

Mesmo que nesta nova tabela eu adicione a medida diretamente como na imagem abaixo, ainda assim, não é possível chamar nenhuma variável desta medida para criar qualquer outra.

Medida adicionada na coluna da tabela.

ADICIONANDO MEDIDA À TABELA – COLUNA CALCULADA

Tentando chamar a variável na coluna nova.

ERRO AO INVOCAR A VARIÁVEL EM OUTRA COLUNA

Como podemos perceber quando se trata de variável, uma vez que ela é criada em uma coluna calculada ou medida, ela não poderá ser utilizada outra estrutura do modelo.

Outro aspecto importante das variáveis é ficar atento a nomenclatura que atribuímos a elas.

NOTA: Se houver uma variável em alguma medida ou coluna calculada, e se por um acaso uma nova tabela for criada com o mesmo nome, essa medida ou coluna calculada que está utilizando acusará erro.

CRIAÇÃO DA VARIÁVEL “TESTE 1” PARA EXEMPLO

Abaixo, renomeei a tabela e criei uma nova coluna de data para efeito de exemplo:

ALTERANDO TABELA E COLUNA – MESMO NOME DA VARIÁVEL

Agora veja no erro que aparece na medida referente a tabela que possui o nome da variável.

ERRO NA VARIÁVEL

Mesmo a variável não sendo global, ela pega nomes de outros objetos fora do seu escopo de atuação! Cuidado!

TIPOS DE DADOS

DAX lida perfeitamente bem com os data types que possui, só é um pouco confuso devido as adições da Microsoft.

Seu poderoso engine é capaz de realizar excelentes conversões de valores de forma implícita e retornar o resultado correto. Existe um componente chamado Operator Overload que identifica o tipo de cálculo efetuado e retorna no formato necessário.

Como por exemplo: somar data com numero int. irá adicionar dias a data

Tente evitar o conversor automático ainda que, como nos exemplos abaixo, ele funcione corretamente.

Vamos realizar alguns testes, sendo o primeiro com data. Na primeira imagem retornando a variável “VALOR4“, temos uma conversão comum de um valor passado como texto, visto que está entre aspas duplas, e convertido para data pelo engine. O formato de data e hora fica a critério, o PBI oferece diversos.

TESTE COM DATA

Agora, utilizando uma função de data com o DATE por exemplo, o resultado muda. Como a função possui seus próprios argumentos e um processo mais específico, a conversão implícita não funciona. Veja o conflito e o erro

ERRO POR FALTA DE ARGUMENTO NA FUNÇÃO DATE

Passando o argumento correto para a variável com a função DATE, temos o resultado esperado. Como o formato está completo, a função será executada sem medo.

NOTA: Os valores poderiam ser passados sem as aspas duplas, desde que preencha os três argumentos necessários.

FUNÇÃO DATE COM OS PARÂMETRIOS CORRETOS

Utilizando a função DATEVALUE convertemos um tipo string em data. Muito utilizada quando queremos uma conversão explicita dentro de uma expressão. Se os argumentos não forem corretos para a função, acusará erro de execução.

ERRO DE CONVERSÃO COM DATEVALUE

Como a função entendeu que cada valor era único, por estarem entre aspas duplas, uma divisão foi realizada e esse resultado sofreu uma conversão. Já que o valor era impossível de se tornar uma data, não foi possível finalizar a expressão corretamente.

DATEVALUE EXECUTADA COM SUCESSO

OPERAÇÕES MATEMÁTICAS

O conversor do PBI consegue processar operações envolvendo tanto string quanto number, veja:

REPRESENTAÇÃO DAS OPERAÇÕES MATEMÁTICAS
  • Quadrante 1 – temos a soma de um number (-1) e uma string (“20”).
  • Quadrante 2 – temos a soma de duas strings.
  • Quadrante 3 – soma de number executada normalmente.
  • Quadrante 4 – concatenação entre um tipo number (1) e uma string (20).

Como podemos ver na execução das expressões, o PBI lidou muito bem com diferentes tipos de formato em operações matemáticas com números quanto de string concatenando. É possível ainda realizar operações lógicas booleanas mudando apenas os operadores.

Veja abaixo a operação lógica utilizando AND (&&).

TESTES LÓGICOS

Na primeira parte deste post introdutório vimos as bases da linguagem DAX, sua operação e segurança quando se trata de conversão, seja implícita ou explícita.

Avançando um pouco mais sobre os fundamentos da linguagem, vamos entender como podemos construir tabelas utilizando apenas códigos dentro do Power BI.

CONSTRUTORES DE TABELA

Normalmente quando trabalhamos com PBI o que fazemos é importar um modelo com as tabelas e a partir daí, criar as medidas, colunas e os gráficos. Porém, utilizando DAX, é possível construir uma tabela do zero para qualquer fim incluindo uma tabela de data para as dimensões.

Aqui não irei construir uma dimensão data, não agora! Apenas mostrar os meios disponíveis para criar uma tabela qualquer para teste ou qualquer outra solução que desejar aplicar.

O primeiro passo é clicar no botão esquerdo “data” e em “nova tabela”. Quando terminar de carregar e abrir e a barra de fórmula, podemos adicionar as colunas para a tabela.

EXEMPLO DE CONSTRUÇÃO DE TABELA UTILIZANDO CÓDIGO

Se quiser criar um bloco de múltiplas colunas uma única vez, basta seguir a sintaxe da imagem abaixo.

CRIANDO COLUNAS

CONCLUSÃO

Este post foi uma revisão dos fundamentos de DAX dentro do Power BI. Como estou voltando ao assunto, resolvi revisitar e reescrevê-lo de forma mais clara e objetiva.

Como foi um releitura, não adicionei novos conceitos nem bases para o conteúdo.

Pretendo revisitar outros e, aí sim, adicionar novos pontos e entendimentos sobre determinado assunto, até para manter atualizado!

Espero que gostem, tenham um ótimo dia!