3. Quem sou eu?
Senior BI Analyst at Comp Line
BI and Database Consultant and
Instructor - One Way Solution
Writer – SQL Magazine
OLAP and ETL Consultant and
Instructor – BI do Brasil
Microsoft Certified Professional
4. Agenda
Microsoft Datazen – Overview
Arquitetura
Instalação (Não Distribuída)
Configuração Inicial
Desenvolvendo KPIs
Data Connections e Data Views
Desenvolvendo Dashboards – Publisher
Publicando e Acessando Dashboards
Datazen - Cases
5. Microsoft Datazen - Overview
“Hoje eu estou animado para anunciar a aquisição
da Datazen Software, uma empresa líder em
inteligência de negócios móvel(...).
Esta aquisição acelera nossa estratégia de
Power BI para ajudar as organizações a
(...) extrair o máximo valor dos dados – a partir
de qualquer lugar, em qualquer dispositivo.”
(Kamal Hathi, Partner Director, Cloud + Enterprise,
Microsoft, 04/2015, The Official Microsoft Blog)
6. Microsoft Datazen - Overview
1) Poder de Análise x
Velocidade de Criação
2) Construção de Análises
Centralizada
3) Acesso Mobile e Web
4) Segurança no acesso
aos dados
11. Windows Server
2012 R2
Web Server Internet
Information Services
Windows Server 2012
Application Server
.NET Framework 4.5
Instalação (Não Distribuída)
12. Não é recomendado usar
contas com alto privilégio
para efetuar a instalação
do Datazen. Não
recomendado o usar o
usuário Local System.
1) Estar em um
Windows
Server 2008 R2,
2012 ou 2012 R2.
2) Ter instalado
o Web Server e
o Application
Server .
O Recomendado é que seja
criado um usuário local
sem previlégio algum. O
Serviço de instalação dará
a esse usuário as devidas
permissões.
Instalação (Não Distribuída)
13. Por padrão, o Windows Server bloqueia o acesso
à rede para os aplicativos adiquiridos através da
Store (Loja de aplicativos).
É necessário que o acesso à rede seja liberado
dentro do Server para que seja possível a conexão
ao Servidor através do Datazen Publisher e
Datazen Viewer.
Instalação (Não Distribuída)
23. Desenvolvendo Dashboards
Dashboards são desenvolvidos e publicados
através do aplicativo Datazen Publisher.
É possível criar Dashboards localmente ou
conectados ao Datazen Server.
31. Muito obrigado pela presença de todos!
Dúvidas?!...
Email: arthurjosemberg@gmail.com
Blog: http://arthurluz.wordpress.com
Twitter @arthurjosemberg
Notas do Editor
-------------------------------------
-- KPI – Comparativo diario de Janeiro – Canada x Alemanha --
-------------------------------------
-- Dia 31 de janeiro - Germany
SELECT--dod.DayNumberOfMonth,
SUM(CONVERT(INT,f.UnitPrice)) PrecoUnitario
FROM FactInternetSales f
JOIN DimProduct dp ON dp.ProductKey = f.ProductKey
JOIN DimCustomer dc ON dc.CustomerKey = f.CustomerKey
JOIN DimSalesTerritory dst ON dst.SalesTerritoryKey = f.SalesTerritoryKey
JOIN DimDate dod ON dod.DateKey = f.OrderDateKey
WHERE dst.SalesTerritoryCountry IN ('Germany')
AND dod.EnglishMonthName = 'January'
AND dod.DayNumberOfMonth = 31
GROUP BY dod.DayNumberOfMonth
ORDER BY dod.DayNumberOfMonth
-- Dia 31 de janeiro - Canada
SELECT--dod.DayNumberOfMonth,
SUM(CONVERT(INT,f.UnitPrice)) PrecoUnitario
FROM FactInternetSales f
JOIN DimProduct dp ON dp.ProductKey = f.ProductKey
JOIN DimCustomer dc ON dc.CustomerKey = f.CustomerKey
JOIN DimSalesTerritory dst ON dst.SalesTerritoryKey = f.SalesTerritoryKey
JOIN DimDate dod ON dod.DateKey = f.OrderDateKey
WHERE dst.SalesTerritoryCountry IN ('Canada')
AND dod.EnglishMonthName = 'January'
AND dod.DayNumberOfMonth = 31
GROUP BY dod.DayNumberOfMonth
ORDER BY dod.DayNumberOfMonth
-- Status Dia 31 de janeiro - Germany X Canada
WITH STATUS AS (
SELECTCASE WHEN CASE WHEN dst.SalesTerritoryCountry = 'Germany' THEN SUM(f.UnitPrice) ELSE 0 END <
CASE WHEN dst.SalesTerritoryCountry = 'Canada' THEN SUM(f.UnitPrice) ELSE 0 END THEN '1'
ELSE '-1' END STATUS,
dst.SalesTerritoryCountry AS Pais
FROM FactInternetSales f
JOIN DimProduct dp ON dp.ProductKey = f.ProductKey
JOIN DimCustomer dc ON dc.CustomerKey = f.CustomerKey
JOIN DimSalesTerritory dst ON dst.SalesTerritoryKey = f.SalesTerritoryKey
JOIN DimDate dod ON dod.DateKey = f.OrderDateKey
WHERE dst.SalesTerritoryCountry IN ('Canada','Germany')
AND dod.EnglishMonthName = 'January'
AND dod.DayNumberOfMonth = 31
GROUP BY dod.DayNumberOfMonth, dst.SalesTerritoryCountry
)
SELECT * FROM STATUS WHERE Pais <> 'Germany'
-- Trend Set - janeiro - Germany X Canada
SELECT Dia, SUM(Germany) - SUM(Canada) ComparativoDiario
FROM (
SELECTTOP 100000000--dst.SalesTerritoryCountry,
dod.DayNumberOfMonth AS Dia,
CASE WHEN dst.SalesTerritoryCountry = 'Germany'
THEN SUM(CONVERT(INT,f.UnitPrice)) ELSE 0 END AS Germany,
CASE WHEN dst.SalesTerritoryCountry = 'Canada'
THEN SUM(CONVERT(INT,f.UnitPrice)) ELSE 0 END AS Canada
FROM FactInternetSales f
JOIN DimProduct dp ON dp.ProductKey = f.ProductKey
JOIN DimCustomer dc ON dc.CustomerKey = f.CustomerKey
JOIN DimSalesTerritory dst ON dst.SalesTerritoryKey = f.SalesTerritoryKey
JOIN DimDate dod ON dod.DateKey = f.OrderDateKey
WHERE dst.SalesTerritoryCountry IN ('Germany','Canada')
AND dod.EnglishMonthName = 'January'
GROUP BY dod.DayNumberOfMonth, dst.SalesTerritoryCountry
ORDER BY dod.DayNumberOfMonth
) TrendSet
GROUP BY Dia
-------------------------------------
-- KPI – Meta Janeiro – Franca --
-------------------------------------
-- Calcula a meta
SELECTSUM(CONVERT(INT,f.UnitPrice))
FROM FactInternetSales f
JOIN DimProduct dp ON dp.ProductKey = f.ProductKey
JOIN DimCustomer dc ON dc.CustomerKey = f.CustomerKey
JOIN DimSalesTerritory dst ON dst.SalesTerritoryKey = f.SalesTerritoryKey
JOIN DimDate dod ON dod.DateKey = f.OrderDateKey
WHERE dst.SalesTerritoryCountry IN ('France')
AND dod.EnglishMonthName = 'January'
GROUP BY dst.SalesTerritoryCountry
-- Valor da Meta = 185000
--Calcula o Status
SELECT--dst.SalesTerritoryCountry AS Pais,
CASE WHEN SUM(CONVERT(INT,f.UnitPrice)) > 185000 THEN 1
WHEN SUM(CONVERT(INT,f.UnitPrice)) < 185000 THEN -1
ELSE 0 END
FROM FactInternetSales f
JOIN DimProduct dp ON dp.ProductKey = f.ProductKey
JOIN DimCustomer dc ON dc.CustomerKey = f.CustomerKey
JOIN DimSalesTerritory dst ON dst.SalesTerritoryKey = f.SalesTerritoryKey
JOIN DimDate dod ON dod.DateKey = f.OrderDateKey
WHERE dst.SalesTerritoryCountry IN ('France')
AND dod.EnglishMonthName = 'January'
GROUP BY dst.SalesTerritoryCountry
-------------------------------------
-- Data View – Vendas --
-------------------------------------
SELECT dc.FirstName + ' '
+ CASE WHEN MiddleName IS NULL THEN ''
ELSE MiddleName END + ' '
+ dc.LastName AS NomeCompleto,
dp.EnglishProductName Produto,
dg.EnglishCountryRegionName AS Pais,
dg.StateProvinceName AS Estado,
dg.City AS Cidade,
dod.CalendarYear AS Ano,
dod.EnglishMonthName AS Mes,
dod.FullDateAlternateKey AS DataVenda,
f.ShipDate AS DataEnvio,
f.SalesOrderNumber AS OrdemVenda,
1 AS QtdVendas,
f.UnitPrice AS ValorVenda
FROM FactInternetSales f
JOIN DimProduct dp ON dp.ProductKey = f.ProductKey
JOIN DimCustomer dc ON dc.CustomerKey = f.CustomerKey
JOIN DimSalesTerritory dst ON dst.SalesTerritoryKey = f.SalesTerritoryKey
JOIN DimDate dod ON dod.DateKey = f.OrderDateKey
JOIN DimGeography dg ON dg.SalesTerritoryKey = dst.SalesTerritoryKey
AND dg.GeographyKey = dc.GeographyKey
-------------------------------------
-- Data View - Vendas - Internet USA x Australia --
-------------------------------------
SELECTdg.EnglishCountryRegionName AS Pais,
dg.StateProvinceName AS Estado,
dg.City AS Cidade,
dod.CalendarYear AS Ano,
dod.EnglishMonthName AS Mes,
SUM(CASE WHEN dg.EnglishCountryRegionName = 'United States'
THEN f.UnitPrice
ELSE 0 END) AS ValorVendaUSA,
SUM(CASE WHEN dg.EnglishCountryRegionName = 'Australia'
THEN f.UnitPrice
ELSE 0 END) AS ValorVendaAustralia
FROM FactInternetSales f
JOIN DimProduct dp ON dp.ProductKey = f.ProductKey
JOIN DimCustomer dc ON dc.CustomerKey = f.CustomerKey
JOIN DimSalesTerritory dst ON dst.SalesTerritoryKey = f.SalesTerritoryKey
JOIN DimDate dod ON dod.DateKey = f.OrderDateKey
JOIN DimGeography dg ON dg.SalesTerritoryKey = dst.SalesTerritoryKey
AND dg.GeographyKey = dc.GeographyKey
WHERE dg.EnglishCountryRegionName IN ('United States', 'Australia')
GROUP BY dg.EnglishCountryRegionName,
dg.StateProvinceName,
dg.City,
dod.CalendarYear,
dod.EnglishMonthName