SQL para Análise de Dados
Para quem esta começando a carreira ou migrando para a área de dados, seja como engenheiro de dados, analista de dados ou cientista de dados, esse é um bom guia inicial de estudos, pois lhe mostrará os principais comandos que são utilizados com mais frequência no dia a dia de um analista de dados (no caso Eu kkk).
Consultar dados
Essa habilidade consiste na capacidade de consultar dados contidos em tabelas (não apenas em tabelas) nas mais diversas Fontes de Dados (consulte na seção Classificação de dados (Data Classification)). Em grande parte das vezes, estas consultas, buscam atender alguma necessidade do negócio, da empresa na qual esta trabalhando!
Normalmente utilizando a linguagem padrão SQL (Structured Query Language). A Linguagem SQL, é subdivida em alguns tipos de linguagem, são elas:
- DDL (Data Definition Language) — principais comandos: CREATE DATABASE | DROP DATABASE | ALTER DATABASE | CREATE TABLE | ALTER TABLE | DROP TABLE | TRUNCATE | RENAME
- DML (Data Manipulation Language) — principais comandos: INSERT | UPDATE | DELETE
- DCL (Data Control Language) — principais comandos: GRANT | REVOKE
- TCL (Transaction Control Language)— principais comandos: ROLLBACK | COMMIT | SAVE POINT
- DQL (Data Query Language) — principais comandos: SELECT (esse aqui será nosso foco) — observação, na literatura também pode ser que encontrem comandos SELECT dentro de DML.
Principais comandos do dia a dia
Abaixo uma listagem dos principais comandos utilizados no dia a dia de um Analista de dados.
Cenário
Aqui usaremos um BD (MySQL) para demostrarmos os comandos, no caso o banco de dados de chama:
datawarehouse
E as tabelas que utilizaremos são:
fato_vendas
dim_produto
dim_cliente
Script para montagem do banco de dados e tabelas (Download)
Os demais comandos SQL…
Costumo dizer assim: “o SQL tem um comando default (acima explicado) e a partir dele podemos onde nossa imaginação mandar…” vamos para alguns destes comandos que podem nos levar muito longe (boas análises)…
DISTINCT — Seleciona os registros distintamente (não aparecerão linhas repetidas)
Exemplo:
A WHERE
cláusula pode ser combinada com os operadores AND
, OR
e NOT
.
Os operadores AND
e OR
são usados para filtrar registros com base em mais de uma condição:
- O
AND
operador exibe um registro se todas as condições separadas porAND
forem TRUE. - O
OR
operador exibe um registro se alguma das condições separadas porOR
for TRUE.
O NOT
operador exibe um registro se a(s) condição(ões) NÃO for VERDADEIRA.
Funções de agregação (SUM, AVG, MAX, MIN, COUNT e ROUND)
Funções embutidas (built-in) aplicadas sobre uma coleção de valores (colunas) do banco de dados
SUM
— Retorna o somatório dos valores de uma coleçãoAVG
— Retorna a média dos valores de uma coleçãoMAX
— Retorna o maior valor de uma coleção de valoresMIN
— Retorna o menor valor de uma coleçãoCOUNT
— Retorna o número de elementos de uma coleção
— Não podem ser utilizados na cláusula WHERE*
ROUND
— Arredondamento de valores
Exemplo:
GROUP BY — Agrupando dados
A instrução GROUP BY agrupa linhas que têm os mesmos valores em linhas de resumo, como “encontrar o número de clientes em cada país”
Exemplo:
HAVING — Condições em Agrupamento de dados
A cláusula HAVING foi adicionada ao SQL porque a palavra-chave WHERE não pode ser usada com funções agregadas.
Exemplo:
O UNION
operador é usado para combinar o conjunto de resultados de dois ou mais SELECT
.
- Cada
SELECT
dentroUNION
deve ter o mesmo número de colunas - As colunas também devem ter tipos de dados semelhantes
- As colunas em cada
SELECT
também devem estar na mesma ordem
Exemplo:
TRIM | REPLACE | LPAD | REPLICATE | SUBSTRING | UPPER | LOWER | LEN
Aqui são comandos relacionados a tratamento de colunas texto, em um único SELECT
, vou colocar um exemplo de cada…
- TRIM— remove espaços
- REPLACE— substitui algo por algo
- LPAD e REPLICATE— Replica valores
- SUBSTRING— pega trecho de um texto
- UPPER— deixa tudo maiúsculo
- LOWER— deixa tudo minúsculo
- LEN— calcula a quantidade de caracteres
Exemplo:
JOIN — Relacionamento entre tabelas — Operação que permite buscar informações de duas ou mais tabelas que estão relacionadas.
Exemplos:
VIEW — Em SQL, uma view é uma tabela virtual baseada no conjunto de resultados de uma instrução SQL.
Exemplo:
WITH— CTE
Uma expressão de tabela comum (CTE) é um conjunto de resultados temporário nomeado que existe no escopo de uma única instrução e que pode ser consultado posteriormente nessa instrução, possivelmente várias vezes.
Em SQL, uma função de janela ou função analítica é uma função que usa valores de uma ou várias linhas para retornar um valor para cada linha. As funções de janela têm uma cláusula OVER; qualquer função sem uma cláusula OVER não é uma função de janela, mas sim uma função agregada ou de linha única.
SQL Server
Script em SQL Server do Banco de Dados acima:
Documentação
Todos os comandos acima utilizados, podem ter pequenas variações de sintaxe dependendo do banco de dados que estiver utilizando, então é extremamente recomendado que conheça e pesquise sempre a documentação da ferramenta que esta utilizando, aqui algumas das principais engine de bancos de dados:
- MySQL | PostgreSQL | Oracle | SQL Server | Presto …
SPARK SQL
O Spark SQL, é parte integrante do framework de Big Data Apache Spark, utilizado para processamento de dados estruturados, que permite executar consultas SQL no conjunto de dados do Spark.
Pensou trabalhar em grandes volumes de dados, pensem em utilizar SPARK.
Aqui mostraremos com exemplo:
- montar o ambiente SPARK dentro do Google Colab
- acessar um MySQL local
- comparar performance usando pandas e SPARK (roda um .csv de exemplo no SPARK em 4seg e no Pandas dá erro)
Material auxiliar (download):
- base de dados MySQL (Script para montar no seu MySQL)
- .csv utilizado para o estudo de performance
Referências
Agradeço pela leitura e espero que tenha sido útil…
Obrigado! Antes de você ir:
· 👏 Deixe suas palmas o story e me siga para mais assuntos
· 📰 Vejam mais conteúdos como este Blog do Souza
· 📰🚀 Diariamente dicas rápidas sobre dados 👉Alex Souza
· 💰 Venham conhecer a Comunidade de Análise de Dados
· 🔔 Sigam: Twitter (X) | LinkedIn | Instagram | Youtube | mais…