top of page
Buscar

Dashboard Vendas, SQL e Power BI

Foto do escritor: Rafael MarianiRafael Mariani

Atualizado: 14 de out. de 2021

Que tal traduzir números de vendas de uma empresa em insights para otimizar tomadas de decisões?






Contexto

Vamos analisar um dataset histórico de uma empresa fictícia da Microsoft - Contoso Company. Orientado a dados, esta empresa poderá otimizar o planejamento estratégico e as tomadas decisões.


Objetivo

A partir de análise de dados e criação de um dashboard, iremos responder as seguintes perguntas:


Quanto foi o faturamento e o lucro total? Quantos produtos foram vendidos? Qual foi a melhor categoria de produto e marca? Para qual região do mundo mais vendemos? Existe sazonalidade ou variação interanual? Entre outras..



Dataset

Fonte: Microsoft

File: https://www.microsoft.com/en-us/download/details.aspx?id=18279

Cobertura Temporal: 2007 - 2009

Frequência de dados: diário





Dashboard online e interativo! Clique aqui para acessar o dash externamente :)








SQL Server

Dataset (ContosoRetailDW.bak) importado no SQL Server. Lista de tabelas abaixo:




Vamos analisar o conteúdo da tabela geografia e loja para identificar colunas de interesse:

select * from DimGeography;
select*from DimStore;

Mesclando a tabela DStore com DGeografia usando Inner Join

select
StoreKey, -- selecionando colunas da TabelaLoja
StoreType, 
StoreName,
EmployeeCount,

ContinentName as 'Continent', --selecionando colunas da TabelaGeografia
CityName as 'City',
StateProvinceName as 'State',
RegionCountryName as 'Country',
geo.GeographyKey

from DimStore as st -- apelidando tabela
inner join DimGeography as geo
on st.GeographyKey = geo.GeographyKey -- coluna em comum
;



Agora, vamos mesclar as tabelas de Currency em FacRate (Cotação e moedas)

Primeiro, daremos uma olhada nas tabelas:


select * from DimCurrency
select * from FactExchangeRate
-- Em comum entre ambas: CurrencyKey

select
rate.ExchangeRateKey, -- colunas de interesse da tabela Rate
rate.CurrencyKey,
rate.DateKey,
rate.AverageRate,
rate.EndOfDayRate,

curr.CurrencyName, -- colunas de interesse da tabela Currency
curr.CurrencyDescription 

from FactExchangeRate as rate
inner join DimCurrency as curr
on rate.CurrencyKey = curr.CurrencyKey
;


Vamos agora gerar uma única tabela Produto a partir da união da tabela Prod. Categoria, Subcategoria e Produto. Vamos considerar apenas colunas de interesse.


select*from DimProduct 
select*from DimProductSubcategory
select*from DimProductCategory 


Mesclando na ordem: (DimProduct x Subcategory) x Category)


select
pro.ProductKey, -- coluna de interesse da tabela Produto
pro.ProductSubcategoryKey,
sub.ProductCategoryKey,
pro.ProductName,
pro.BrandName,
pro.ClassName,
pro.UnitCost, 
pro.UnitPrice,
pro.AvailableForSaleDate,

sub.ProductSubcategoryName, -- coluna de intesse da tabela DimProductSubcategory
cat.ProductCategoryName -- coluna de interessda da coluna DimProductCategory

from DimProduct as pro -- apelidando tabela
inner join DimProductSubcategory as sub -- unindo com tabela Subcategoria
on pro.ProductSubCategoryKey = sub.ProductSubCategoryKey -- coluna em comum entre as 2 tabelas

inner join DimProductCategory as cat -- unindo com tabela Categoria
on sub.ProductCategoryKey = cat.ProductCategoryKey -- coluna em comum entre as 2 tabelas

;


Simplificando e concatenando para gerar uma coluna comum entre Tabela Rate e Sales


select
rate.ExchangeRateKey, -- colunas de interesse da tabela Rate
rate.CurrencyKey,
convert(varchar(10),rate.DateKey, 103) as Datekey, -- convertendo data de DateKey para o formato dd/mm/ano
rate.AverageRate,
rate.EndOfDayRate,

curr.CurrencyName, -- colunas de interesse da tabela Currency
curr.CurrencyDescription,

concat(convert(varchar(10),rate.DateKey,103),' ',rate.CurrencyKey) as 'DateCurrencyKey' -- concatenando para gerar uma coluna comum entre Tabela Rate e Sales

from FactExchangeRate as rate
inner join DimCurrency as curr
on rate.CurrencyKey = curr.CurrencyKey
;



Fazendo o mesmo para tabela Vendas (Sales)

select 
SalesKey,
convert(varchar(10),DateKey,103) as 'DateKey',
ProductKey,
CurrencyKey,
UnitCost,
UnitPrice,
ReturnQuantity,
ReturnQuantity,
DiscountAmount,
TotalCost,
SalesAmount,

concat(convert(varchar(10),DateKey,103),' ',CurrencyKey) as 'DateCurrencyKey' -- concatenando para gerar uma coluna comum entre Tabela Rate e Sales. 103 = formato dd/mm/yy

from FactSales


Agora, vamos converter os códigos em tabelas para exportar para o Power BI (Criar Views):


-- TABELA VENDAS 
Create View vwSales as -- criando uma view 
select
SalesKey,
StoreKey,
convert(varchar(10),DateKey,103) as 'DateKey',
ProductKey,
CurrencyKey,
UnitCost,
UnitPrice,
ReturnQuantity,
ReturnAmount,
DiscountAmount,
TotalCost,
SalesAmount,

concat(convert(varchar(10),DateKey,103),' ',CurrencyKey) as 'DateCurrencyKey' -- concatenando para gerar uma coluna comum entre Tabela Rate e Sales. 103 = formato dd/mm/yy

from FactSales
;
*/



-- TABELA PRODUTOS
Create View vwProduct as
select
pro.ProductKey, -- coluna de interesse da tabela Produto
pro.ProductSubcategoryKey,
sub.ProductCategoryKey,
pro.ProductName,
pro.BrandName,
pro.ClassName,
pro.UnitCost, 
pro.UnitPrice,
pro.AvailableForSaleDate,

sub.ProductSubcategoryName, -- coluna de intesse da tabela DimProductSubcategory
cat.ProductCategoryName -- coluna de interessda da coluna DimProductCategory

from DimProduct as pro -- apelidando tabela
inner join DimProductSubcategory as sub -- unindo com tabela Subcategoria
on pro.ProductSubCategoryKey = sub.ProductSubCategoryKey -- coluna em comum entre as 2 tabelas

inner join DimProductCategory as cat -- unindo com tabela Categoria
on sub.ProductCategoryKey = cat.ProductCategoryKey -- coluna em comum entre as 2 tabelas

;



-- TABELA COTAÇÕES
Create View vwCurrency as
select
rate.ExchangeRateKey, -- colunas de interesse da tabela Rate
rate.CurrencyKey,
convert(varchar(10),rate.DateKey, 103) as Datekey, -- convertendo data de DateKey para o formato dd/mm/ano
rate.AverageRate,
rate.EndOfDayRate,

curr.CurrencyName, -- colunas de interesse da tabela Currency
curr.CurrencyDescription,

concat(convert(varchar(10),rate.DateKey,103),' ',rate.CurrencyKey) as 'DateCurrencyKey' -- concatenando para gerar uma coluna comum entre Tabela Rate e Sales

from FactExchangeRate as rate
inner join DimCurrency as curr
on rate.CurrencyKey = curr.CurrencyKey


-- TABELA LOJAS 
Create View vwStore as 
select
StoreKey, -- selecionando colunas da TabelaLoja
StoreType, 
StoreName,
EmployeeCount,

ContinentName as 'Continent', --selecionando colunas da TabelaGeografia
CityName as 'City',
StateProvinceName as 'State',
RegionCountryName as 'Country',
geo.GeographyKey

from DimStore as st -- apelidando tabela
inner join DimGeography as geo
on st.GeographyKey = geo.GeographyKey -- coluna em comum com chave primária
;

Dados prontos para serem incorporados pelo Power BI.



Modelo de relacionamento entre as tabelas:














Fim! Curtiu? :)







30 visualizações0 comentário

Posts recentes

Ver tudo

Yorumlar


logo rm.png

© 2021 por Rafael Mariani. Criado orgulhosamente com Wix.com

bottom of page