SQL vs DAX - Operações básicas

SQL vs DAX - Operações básicas

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

Comandos uteis para trabalhar com tabelas no SQL
15/03/2020SQL

Comandos uteis para trabalhar com tabelas no SQL

Algumas dicas de como listar a quantidade de registros, data de atualização e índices de tabelas no SQL Server e no MySQL

Saiba mais...
Como agrupar vários registros em uma única coluna com SQL
26/06/2022SQL

Como agrupar vários registros em uma única coluna com SQL

Veja como agrupar várias linhas em uma única coluna com SQL

Saiba mais...

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