SQL

SQL vs DAX - Operações básicas

28/11/2021SQL

Nesta série de artigos vamos comparar operações básicas feitas no SQL e seus similares utilizando DAX. Se você já conhece SQL e está dando seus primeiros passos com PowerBI, estes artigos vão ser muito úteis para você.

Para acompanhar este artigo você vai precisar ter instalado os seguintes programas:


SQL Server Express

https://www.microsoft.com/pt-br/sql-server/sql-server-downloads

O SQL Server Express é a versão gratuita ideal para desenvolvimento e produção de aplicações de área de trabalho, Web e pequenos servidores.

 

Power BI Desktop

https://powerbi.microsoft.com/pt-br/downloads/

Com o Power BI Desktop, você pode explorar visualmente seus dados por meio de uma tela do tipo "arrastar e soltar" de formato livre, uma ampla variedade de visualizações de dados modernas e uma experiência de criação de relatórios fácil de usar.

 

DAX Studio

https://daxstudio.org

O DAX Studio é uma ferramenta muito útil para executar e analisar consultas DAX. Vamos utilizar ele em conjunto com o Power BI.

 

Primeiro vamos criar os dados que serão utilizados em nossos exemplos. No SQL Server, vamos criar uma tabela e inserir com informações.

 

CREATE TABLE Produtos(

[Nome] [varchar](50) NULL,

[Categoria] [varchar](50) NULL,

[Preco] [decimal](18, 2)

)

 

INSERT INTO Produtos (Nome, Categoria, Preco) VALUES ('Mouse','Informática',12.50);

INSERT INTO Produtos (Nome, Categoria, Preco) VALUES ('Teclado','Informática',30.00);

INSERT INTO Produtos (Nome, Categoria, Preco) VALUES ('Cadeira','Móveis',150.00);

INSERT INTO Produtos (Nome, Categoria, Preco) VALUES ('Estante','Móveis',200.00);

INSERT INTO Produtos (Nome, Categoria, Preco) VALUES ('Mesa','Móveis',267.18);

INSERT INTO Produtos (Nome, Categoria, Preco) VALUES ('Impressora','Informática',500.78);

INSERT INTO Produtos (Nome, Categoria, Preco) VALUES ('Fone de Ouvido','Informática',40.00);

INSERT INTO Produtos (Nome, Categoria, Preco) VALUES ('Sofá','Móveis',789.90);

 

Agora chegou a ver de criar nosso modelo de dados no Power BI. Ao abrir o Power BI, na lateral esquerda abaixo da barra de ferramentas temos 3 botões, Relatório, Dados e Modelo. Por padrão o programa abre na opção Relatório. Clique no botão "Dados".

Power BI - Botão Dados

 

Na barra de ferramentas "Ferramentas de Tabela", clique no botão "Nova Tabela", que fica na parte direita, agrupado com os botões de uma seção chamada "Cálculo".

Power BI - Ferramentas - Nova Tabela

Ao clicar neste botão, vai abrir uma tela para inserir uma expressão DAX, basta inserir a função e clicar no botão de confirmar que fica ao lado do painel onde você vai inserir suas instruções.

Power BI - Criar Tabela

 

Para criar a tabela que vamos usar nos testes, insira o comando a seguir.

 

Produtos =

DATATABLE(

"Nome", STRING,

"Categoria", STRING,

"Preco", Currency,

{

{"Mouse","Informática",12.50},

{"Teclado","Informática",30.00},

{"Cadeira","Móveis",150.00},

{"Estante","Móveis",200.00},

{"Mesa","Móveis",267.18},

{"Impressora","Informática",500.78},

{"Fone de Ouvido","Informática",40.00},

{"Sofá","Móveis",789.90}

}

)

 

O comando DATATABLE recebe uma lista de campos (nome e tipo de dados), e na sequência uma lista de registros, que devem ser inseridos na mesma ordem em que os campos foram criados.

Os tipos de dados utilizados no DAX são os seguintes:  Integer, Double, String, Boolean, Currency e DateTime.

 

Para executar as consultas em DAX será necessário abrir o DAX Studio.  Ainda no modo de visualização de dados, na barra de ferramentas selecione a opção "Ferramentas Externas" e clique no botão do DAX Studio. 

Power BI - Ferramentas Externas

 

Uma outra alternativa e salvar o seu arquivo do Power BI é abrir o DAX Studio em separado. Ao abrir vai aparece a tela Connect. Selecione a opção "PBI/SSDT Model", que já deve estar com o nome do arquivo PowerBI que você criou. Ao clicar em connect, já abre o painel onde você pode digitar as suas consultas DAX.

Agora que temos dados de exemplo, chegou a hora de praticar!

Vamos começar com algo simples, como listar todos os dados da tabela que foi criada

SQL

SELECT * FROM Produtos

 

DAX

EVALUATE Produtos

 

Para executar as consultas no DAX Studio você deve clicar no botão RUN, o primeiro botão da esquerda na barra de ferramentas do Dax Studio

DAX Studio - Executar comandos

 

No DAX Studio para listar os dados da tabela usamos EVALUATE e a tabela que desejamos acessar. O EVALUATE vai ser utilizado antes de qualquer instrução que for executada no DAX Studio.


Caso seja necessário escolher as colunas que desejamos, podemos fazer da seguinte forma:

 

SQL

SELECT Nome, Categoria FROM PRODUTOS

 

DAX

EVALUATE

SELECTCOLUMNS(

'Produtos',

"Nome",[Nome],

"Categoria", [Categoria]

)

 

O comando SELECTCOLUMNS recebe como primeiro parâmetro o nome da tabela, e como parâmetros seguintes as colunas que desejamos. Primeiro informamos qual o alias (apelido) desejado e na sequência informamos o nome da coluna entre chaves.

Caso seja necessáro exibir um campo novo e fazer alguma operação podemos fazer assim

 

SQL

SELECT Nome, Categoria, Preco * 1.20 as Preco_novo FROM PRODUTOS

 

DAX

EVALUATE

SELECTCOLUMNS(

'Produtos',

"Nome",[Nome],

"Categoria", [Categoria],

"Preco_novo", [Preco] * 1.20

)

 

Perceba que o campo Preco_novo é a multiplação da coluna Preco por 1.20, o que vai gerar um valor 120% maior que o original.

Em nossa tabela de produtos temos registros de várias categorias. Caso seja necessário uma lista distinta de categorias podemos fazer de duas formas:

 

SQL

SELECT DISTINCT Categoria FROM produtos ORDER BY Categoria

 

DAX

EVALUATE

DISTINCT (Produtos[Categoria]) ORDER BY [Categoria]

 

EVALUATE

SUMMARIZE (

'Produtos',

[Categoria]

) ORDER BY [Categoria]

 

Como neste caso estamos retornando os dados distintos de apenas uma coluna, podemos usar a função DISTINCT e informar o nome da tabela e o campo desejado. No final utilizamos o comando ORDER BY para colocar em ordem alfabética os resultados.

Para resumir dados e trabalhar com mais de uma coluna usamos o comando SUMMARIZE. Ele recebe como primeiro parâmetro os dados de referência que em nosso caso é a tabela Produtos, e na sequência as colunas que desejamos resumir entre colchetes, em nosso campo o campo desejado é Categoria. No final do SUMMARIZE usamos o comando ORDER BY para ordenar os resultados pela coluna utilizada dentro do SUMMARIZE

Caso exista a necessidade de contar quantas categorias distintas existem em nossa tabela podemos fazer assim:

 

SQL

SELECT COUNT(DISTINCT Categoria) FROM produtos

 

DAX

EVALUATE

{DISTINCTCOUNT(Produtos[Categoria])}

 

Se você desejar retornar apenas alguns registros pode limitar os resultados da consulta desta forma:

 

SQL

SELECT TOP 2 * FROM Produtos;

 

DAX

EVALUATE 

TOPN( 2, Tabela2 )

 

A função TOPN permite selecionar parte dos registros da tabela. Ele recebe 2 parâmetros, o primeiro é a quantidade de registros, o segundo são os dados de referência, em nosso caso a tabela Produtos.

 

SQL

SELECT COUNT(*) FROM Produtos

 

DAX

EVALUATE

{COUNTROWS (Produtos)}

 

A função COUNTROWS retorna a quantidade de registros da origem de dados informada.

 

No próximo artigo vamos ver como filtrar textos e números no DAX

SQL vs DAX - Filtrando registros

Outros conteudos que podem ser de seu interesse

Como localizar queries lentas no SQL Server
23/09/2019SQL

Como localizar queries lentas no SQL Server

Aprenda como localizar as queries que deixam o seu banco de dados lento

Saiba mais...
Consultas lentas no SQL Server
06/12/2020SQL

Consultas lentas no SQL Server

Algumas dicas de como identificar queries lentas no SQL Server

Saiba mais...

Conteúdo sobre banco de dados sem complicação!

MySQL - Referência Rápida

 

SQL Server - Referência Rápida

 

SQL vs Mongo