Este artigo teve como motivação, a experiência compartilhada com inúmeros alunos em turmas presenciais e online, além de debates com diversos colegas que atuam, tanto na área de capacitação, quanto de desenvolvimento de soluções. Cito em especial uma LIVE recente em que participei no canal do Marcos Rieper, do Guia do Excel.
Vou tratar aqui, especificamente das dificuldades que atingem aquelas pessoas que, após muito tempo trabalhando com as funções nativas do Microsoft Excel em sua interface de trabalho, passam à trabalhar também com as Expressões DAX, seja no próprio Excel, através do suplemento do Power Pivot, ou no Power BI Desktop.
Não se trata, de forma alguma, de uma comparação direta entre os algoritmos, visando estabelecer de alguma forma qual é o melhor. Deixo claro desde já que estamos tratando de recursos distintos, que se aplicam à situações e soluções distintas, e que assim devem ser compreendidos. O objetivo é identificar os pontos de dificuldade para quem transita do recurso nativo do Excel para o conjunto das Expressões DAX. Somente isto.
Elenco alguns pontos que representam desafios especiais a serem superados.
O primeiro deles, e o mais importante provavelmente, é a mudança em relação à disposição dos dados que servem como base para os cálculos.
O Excel, que é um software de planilha eletrônica, tem como característica uma área de trabalho - a qual chamamos de planilha - constituída da sobreposição de LINHAS e COLUNAS, tal qual uma matriz (do conceito matemático). Esta sobreposição cria um novo elemento, que chamamos de CÉLULA, que nada mais é do que a intersecção entre uma coluna e uma linha:
Aliás, como sempre nos lembra o Mestre João Benito Savastano, o Excel é uma grande matriz, adaptada ao uso tecnológico.
O ponto a se destacar é que a aplicação de tal conceito à uma interface tecnológica gerou a possibilidade de se inserir em cada célula da planilha um dado diferente, independente do conteúdo das células ao redor: acima, abaixo, à direita ou esquerda. Cada célula é um "container" de dados independente, que pode ser manipulado de acordo com a necessidade ou intenção de quem está trabalhando.
Isto induz o usuário/desenvolvedor, especialmente os de pouca experiência, à aplicar um arranjo visual aos dados. Digo visual, pois tal independência permite dispor os dados partindo desta concepção para seu melhor entendimento, alocando as informações aleatoriamente, ou numa organização visual que corrobore o seu raciocínio.
Em contraposição à este conceito, temos um banco de dados, por exemplo, onde estes são dispostos obedecendo um conceito estrutural: o formato tabular, que impõe regras à organização dos mesmos, onde cada coluna - chamada de campo - deve conter dados de mesma natureza, com o mesmo tipo primitivo - característica que determina se o dado é um texto, um número, um valor booleano, etc.
E é exatamente aqui que o profissional encara a primeira dificuldade, pois as expressões DAX foram desenvolvidas para serem aplicadas à dados estruturados, dispostos de forma tabular, e não visual, como o Excel permite em sua estrutura nativa.
Para melhor exemplificar, tomemos por base a seguinte imagem:
Aqui, mostro parte do material do meu curso básico de Excel, onde o aluno começa a aprender como se trabalhar com os operadores matemáticos mais básicos para realização de cálculos simples na planilha.
Observando com atenção a coluna F da planilha mostrada nesta última imagem, destacada em vermelho, vemos que existem dados de diferentes tipos: números decimais em formato de moeda, números inteiros e percentuais. Isto é perfeitamente possível no Excel devido ao conceito de célula. Como profissional eu posso dispor os dados de forma visual, facilitando o entendimento do assunto que estou tratando - no caso da imagem, um cálculo de juros simples - para me orientar e também à quem mais venha a usar ou visualizar esta planilha comigo. Busco obter clareza e precisão naquilo que estou demonstrando, de forma didática.
O conceito de célula me permite referenciar as mesmas de forma independente para encadear as etapas de um cálculo:
Para chegar ao valor da parcela, utilizo um operador matemático comum - a barra, que representa a divisão - e referencio as células F9 e F10. Em outras palavras: utilizando a BARRA, indico ao algoritmo das expressões de cálculo do Excel que quero dividir o valor contido na célula F9 pelo valor contido na célula F10.
Nesta mesma coluna, a coluna F da planilha, existem outros cálculos diferentes: somas e multiplicações. Ou seja, o Excel me permite trabalhar não somente com dados de TIPOS diferentes numa mesma coluna, como também me permite realizar DIFERENTES OPERAÇÕES MATEMÁTICAS.
Normalmente, neste ponto, o profissional em transição, imagina que bastará aprender a usar uma função equivalente dentro do conjunto das Expressões DAX para chegar ao mesmo resultado, através de um método semelhante. Mas isto não acontece. As Expressões DAX não trabalham desta forma. Não há como passar à elas como referência, o endereço de uma célula de uma planilha.
As Expressões DAX trabalham com dados em formato TABULAR, ou seja dispostos em formato de tabela, como já exposto anteriormente, com colunas íntegras, que respeitam um padrão de organização baseado no tipo primitivo: uma coluna com números decimais não pode conter um texto em uma determinada linha - tupla - da tabela. Ela deve conter exclusivamente números decimais. Ou números inteiros, datas, horas ou qualquer outro tipo de dado, mas SEMPRE e invariavelmente em toda sua extensão, sem exceções. E estes devem fazer referência à uma única natureza específica, determinada pelo assunto do qual trata tal tabela.
Observando esta última figura com atenção, fica clara a presença de um padrão de organização, devidamente estruturado, onde cada coluna mostra uma característica específica do tópico à qual esta TABELA se refere - neste caso, um cadastro de PRODUTOS. Cada produto está listado em sua própria LINHA - tupla - e ele não se repete nesta mesma tabela. Cada uma de suas características estão ilustradas em uma coluna diferente, inclusive, os atuais preço e custo. Tal cruzamento garante a integridade das informações aqui contidas, e também a integridade do Tipo Primitivo do dado, uma vez que as últimas colunas contém exclusivamente números decimais.
É esta concepção diferente que costuma confundir, pois, uma vez utilizando as Expressões DAX, NÃO é possível utilizar referências de célula, nem tampouco algo semelhante.
Para permanecer no Excel, e começar à entender melhor como operam as Expressões DAX, é útil lançarmos mão de um recurso fantástico, surgido na versão 2007 do programa: as Tabelas. Sim, é comum que chamemos qualquer intervalo de dados organizados de tabela, mas aqui estou me referindo ao recurso de formatar um determinado intervalo de dados como uma TABELA, como mostro na próxima imagem:
Infelizmente a maioria dos usuários consideram apenas a parte estética deste recurso, e não se dão conta das inúmeras características de produtividade e organização de dados que ele proporciona.
Ao formatar um intervalo de dados como Tabela, no Excel, o comportamento do mecanismo de cálculo também muda, e não temos mais as referências de célula sendo utilizadas. Os cálculos passam à obedecer aquilo que chamamos de processamento Colunar, ou seja, a fórmula ou função digitada em uma célula qualquer, dentro da Tabela, é automaticamente replicada para todas as células da respectiva coluna.
É neste ponto que começamos à compreender o mecanismo de funcionamento das Expressões DAX, embora ainda estejamos utilizando aqui, as expressões nativas do MS Excel.
Vamos observar a próxima imagem:
Criei uma nova coluna nesta tabela, apenas digitando o título "Margem" na primeira célula à direita da última coluna existente, a coluna "Custo". O objeto Tabela criou automaticamente uma nova coluna, para toda a extensão da mesma. Logo na primeira célula desta nova coluna eu digitei uma fórmula simples, subtraindo do PREÇO o respectivo CUSTO, para chegar então, à MARGEM. O mecanismo de cálculo colunar da Tabela, indexou as referências à partir dos títulos das colunas que participam do cálculo, ou seja, PREÇO e CUSTO, referenciados como mostrado na imagem em azul e vermelho:
=[@Preço]-[@Custo]
Implicitamente, o usuário do Excel percebe que o cálculo está usando os valores das células "I2" e "J2", e que segue descendo as linhas sucessivamente. Mas não LÊ estas referências na fórmula, que independente da linha, continuará mostrando o mesmo, como mostra a próxima imagem:
Esta é a primeira amostra do funcionamento das Expressões DAX, e é compreendendo isto, que começamos à superar o primeiro desafio: se não temos o conceito de células para utilizar, e o mecanismo de cálculo obedece tal princípio de replicação (recursividade), então é necessário pensarmos em cálculos que se apliquem à toda extensão de nossa base de dados, de maneira uniforme.
E para isto precisamos superar um segundo aspecto, que é a organização dos dados.
Como já mencionado aqui, o Excel permite que o usuário insira em cada uma de suas células qualquer conteúdo que deseje. É este mesmo o princípio da coisa, pois uma planilha eletrônica se destina à nos auxiliar no encadeamento de cálculos complexos, e sem tal possibilidade, tudo ficaria muito mais difícil.
Dentro deste entendimento, muitos usuários, especialmente aqueles que nunca fizeram algum treinamento formal, adotam práticas condenáveis, que levam à uma base de dados de qualidade ruim:
Vemos nesta última imagem alguns exemplos de más práticas, destacados: o péssimo hábito de se adicionar caracteres e/ou valores diferentes daqueles que são esperados para o formato tabular: se a última coluna deveria conter exclusivamente datas, aquele "NA" na segunda linha não deveria estar ali. Um usuário mais avançado sabe que na falta do dado, deve-se deixar em branco o respectivo campo, mas o usuário comum do Excel, pela sinergia que desenvolve naturalmente com colegas de trabalho, acaba adotando a prática de indicar visualmente que o dado não está disponível ou não se aplica.
O efeito colateral desta pratica é a necessidade de um tratamento de limpeza nestes dados antes de se utilizar Expressões DAX, para evitar problemas com cálculos.
Numa interface voltada ao trabalho com dados estruturados, como o Power Pivot no Excel, ou o Power BI, tal coluna DEVE ser tratada, recebendo a tipificação do dado como DATA, no caso da última, "Vencimento", e como NÚMERO DECIMAL, no caso da coluna "Valor". Somente com tal tratamento, será possível aplicar alguma das funções DAX posteriormente, para algum cálculo.
Quando se trabalha com os valores em células de uma planilha, para uso de funções nativas do Excel, o usuário não se preocupa com algo como o TIPO natural do dado.
Neste ponto, o que costuma nos ocorrer é: COMO fazer com que as funções do conjunto de Expressões DAX tomem como referência e obedeçam algum critério que está contido em um ponto específico da base de dados, similar à uma célula do Microsoft Excel? A solução para isto passa, basicamente, pela compreensão e aplicação daquilo que chamamos de TRANSIÇÃO DE CONTEXTO que se baseia nos contextos de LINHA e FILTRO, aplicáveis às bases de dados que servem de material para os cálculos com Expressões DAX.
E para melhor entendimento, veremos sobre estes conceitos na segunda parte deste artigo, que muito em breve estará disponível.
Esta elucidação no que tange a Excel Vs DAX, me ajudou a ter uma visão mais clara sobre a uso dessas duas ferramentas poderosas que fazem parte do meu dia a dia. Muito bem explicado! Parabéns!