Que tal traduzir números de vendas de uma empresa em insights para otimizar tomadas de decisões?
![](https://static.wixstatic.com/media/1b626c_2030abf866f54630ac674c2714730d57~mv2.png/v1/fill/w_666,h_375,al_c,q_85,enc_auto/1b626c_2030abf866f54630ac674c2714730d57~mv2.png)
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:
![](https://static.wixstatic.com/media/1b626c_70bc89dcb91341f28ad7021f8bb2776d~mv2.jpg/v1/fill/w_980,h_527,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_70bc89dcb91341f28ad7021f8bb2776d~mv2.jpg)
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:
![](https://static.wixstatic.com/media/1b626c_d70bc1c96995440ba2f2c8b986fa7fc6~mv2.jpg/v1/fill/w_980,h_507,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_d70bc1c96995440ba2f2c8b986fa7fc6~mv2.jpg)
Fim! Curtiu? :)
Yorumlar