Construir e Consultar
o Data Warehouse
com SQL Server
Jacques Robin
Alexandre Damasceno
Marcelino Pereira
CIn-UFPE
Roteiro
1. Recursos do SQL Server para Data Warehousing e OLAP
2. Estudo de caso: criar e consultar Data Warehouse de
estatísticas de jogos da RoboCup para descobrir insights
táticos
3. Preparação de dados com o pacote Data Transformation
Services
4. Criação de cubos multidimensionais a partir de tabelas
relacionais com o OLAP Manager
5. Consultar cubos multidimensionais com OLE DB for OLAP
e MDX
Arquitetura de ferramentas do SQL Server
para Data Warehousing
SQL
Server
Enterprise
Manager
FLAT
Query
Analizer
OLAP
Server
Tabelas
OLAP
Manager
Cubo
DTS
MDX
Sample
Estudo de caso: RoboCup Warehousing
link: ~robocup\aula\
Estudo de caso: RoboCup Warehousing
Arquivos de log do simulador de partidas SoccerServer
 Dados em formato flat
 Sem intencionalidade:

• Apenas resultado no campo das ações dos
agentes/clientes/jogadores
• Sem as ações mandadas para o simulador pelos agentes,
nem as percepções recebidas em volta
• Sem possibilidade de inferí-las confiavelmente, devido ao ruído
introduzido pelo simulador
De granularidade fina demais para descobrir insights
procurados por mineração direta
 Necessidade de passo(s) de derivação de dados de
granularidade suficiente na preparação dos dados

RoboCup Warehousing:
exemplo da fonte de dados disponível
RoboCup Warehousing: preparação de dados
Ferramenta de
modelagem E-R
Log do
Soccer
Server
Data Mart
ROLAP
Serviços de
transformação
de dados
Microsoft
SQL Server
Log do
Soccer
Server
SGBD
relacional
Hipercubo
OLAP
derivados
Hipercubo
OLAP
primitivo
Servidor
OLAP
JODI: API
OLE DB for OLAP / Java
API
XSB-SQL
InterProlog
API Java / XDB
Sistema dedutivo
XSB
DOODI: API
OLE DB for OLAP / XSB
Usar Visio para modelagem E-R do
Warehouse ROLAP e criação das tabelas
Modelo estrela de dados primitivos
Modelo estrela de dados derivados I
Modelo estrela de dados derivados II
Modelo constelação do warehouse pronto
para consultas OLAP
Data Transformation Services (DTS):
Funcionalidades
Migrar dados entre diferentes localidades de modo
automático.
 Tratar esses dados durante o sua migração.
 Permite o uso de scripts para realizar esses trabalhos de
modo mais elaborado.

Formato Flat do DTS










1,0,4,"0.0,0.0","-47.0,0.0",101,0,-11,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-43.0,0.0",102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-35.0,25.0",103,0,-36,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-30.0,0.0",104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-35.0,-25.0",105,0,35,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-3.0,25.0",106,0,-83,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-0.6,-0.6",107,1,49,0,0,1,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-15.0,-15.0",108,0,-142,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-3.0,31.0",109,0,-83,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-1.0,10.0",110,0,-85,0,0,0,0,0,0,0,0,0,0,0,0,1
Pré-processamento do pré-processamento

Teamleft: 11monkeys, Teamright:
FCFoo




Score: 0:0
T: 0, mode: 4 Ball: ( 0.0, 0.0), P: 1(48.0, 0.0, 3), 2(-31.8, 0.0, 0), 3(27.8, 14.9, -8), 4(-28.0,-15.0, 120), 5(22.0, 0.0, 87), 6( -9.0, 22.0, -11), 7( 1.0, 12.0, 20), 8( -9.0,-22.0, 6), 9( 1.0, 0.0, -75),10(-10.0, 0.0, -15),11( 1.0,-12.0, 87),12( 47.0, 0.0,-179),13(
25.0, 15.0,-178),14( 30.0, 5.0,-150),15(
24.5, 0.0, 179),16( 30.0, -5.0, 150),17(
25.0,-15.0, 179),18( 20.0, 20.0, 178),19(
9.4, 0.0,-179),20( 20.0,-20.0,-176),21(
4.1, 8.2,-116),22( 1.8, -8.9, 101),








1,0,4,"0.0,0.0","-47.0,0.0",101,0,11,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","43.0,0.0",102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-35.0,25.0",103,0,36,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","30.0,0.0",104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-35.0,25.0",105,0,35,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-3.0,25.0",106,0,83,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-0.6,0.6",107,1,49,0,0,1,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-15.0,-15.0",108,0,142,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-3.0,31.0",109,0,83,0,0,0,0,0,0,0,0,0,0,0,0,1
1,0,4,"0.0,0.0","-1.0,10.0",110,0,85,0,0,0,0,0,0,0,0,0,0,0,0,1
Pré-processamento do pré-processamento

Soluções encontradas:
• Programa Perl, Java, C ...
• DTS
• Com auxílio de consultas SQL
Usar o DTS Wizard

Começar a mexer com a base
• link: ~robocup\aula\
OLAP Manager: funcionalidades

Acessar servidores OLAP
• Registro de servidores

Criar e alterar estrutura multi-dimensional
• Dimensões
• Cubos
• ...

Visualizar dados
• Navegador de consultas simples
Criar cubos a partir do warehouse relacional
com o OLAP Manager Wizard
OLE DB for OLAP

Para conexão com Data Warehouse e funções
administrativas:
•

usa outros padrões “abertos e orientados a objetos” da
Microsoft: COM e OLE
Para consultar Data Mart conectado:
• usa uma linguagem com sintaxe parecida com SQL: MDX

Independente do modelo físico de dados
• ROLAP, MOLAP ou HOLAP
Amarrado a plataforma Windows
 Pode ser chamado apenas a partir de C++

Padrões da Microsoft
“abertos e orientados a objetos”

UDA (Universal Data Access):
•

COM (Component Object Model):
•
•
•

padrão de interfaces para vários tipos de serviços
como métodos de (pseudo)-objetos sem ID nem atributos
acesso a métodos via ponteiros, herança simples e simulada via includes
OLE (Object Linking and Embedding):
•
•
•

conjunto de padrões e API para acesso a vários tipos de dados
transparentemente do seu suporte de armazenamento físico
conjuntos de interfaces COM fornecendo serviços de acesso a dados de vários
tipos (planhilha, BD, HTML, etc) a partir de C/C++
OLE DB: parte de OLE para acesso a BD
OLE DB for OLAP: parte de OLE DB para acesso a BDMD
ADO (ActiveX Data Objects):
•
•
camada de UDA acima de OLE permintindo acesso “objetos” OLE a partir de
outras linguagens MS como Visual J++ e Visual Basic
ADOMD: parte de ADO para acesso a BDMD
MDX: sintaxe das consultas

WITH
• membros virtuais calculados a partir de membros do cubo
• via operadores aritméticos, estatísticos, de agregação, de
series temporais, de formatação de saída

SELECT
• conjunto de membros de dimensões, hierarquias e níveis
• especificado via expressão de operadores




OLAP (DrillDown, Filter, ...)
de manipulação de conjuntos (CrossJoin, Union, Inter, Member ...)
agregação (TopSum, TopCount, TopPercent, Order, ...)
ON eixos de visualização planares:
• row, column, page, sections, chapters
FROM cubo
 WHERE lista de membros de dimensões medidas, slice e dice.

Exemplos simples de uma consulta MDX
WITH [Medidas].[Lucro]
AS ‘[Medidas].[Vendas] * ([Medidas].[PrecoUnitario] - [Medidas].[CustoUnitario])’
SELECT NON EMPTY (CROSSJOIN ({[LojaLoc].[Pais].MEMBERS},
{[Tempo].[Ano].MEMBERS}) ON COLUMNS
NON EMPTY {[ProdCat].[SubCat].MEMBERS} ON ROWS
FROM Vendas
WHERE ([Medidas].[Lucro]).
Consultas MDX sobre cubo de dados
primitivos





select
{[DimGame].[Game].AllMembers} on columns,
{[DimMode].[Description].AllMembers} on rows
from PrimitiveCube
where [Measures].[Occurrence]

with member [Measures].[TrueValue] as
'([Measures].[Occurrence]/22)'
select
{crossjoin([DimGame].[Game].AllMembers,
[DimAgent1].[Team].AllMembers) } on columns,
{[DimMode].[Description].AllMembers} on rows
from PrimitiveCube
where [Measures].[TrueValue]

Modificar exemplo





Consultas MDX sobre cubo de dados
derivados





select
{[DimGame].[Game].Allmembers} on columns,
{[DimStatistic].[SubType].Allmembers} on rows
from DerivedCube
where [Measures].[Occurrence]

select
{crossjoin([DimGame].[Game].AllMembers,
[DimAgent1].[Team].AllMembers) } on columns,
{[DimStatistic].[SubType].AllMembers} on rows
from DerivedCube
where [Measures].[Occurrence]

Modificar exemplo




Download

Construir e Consultar o Data Warehouse com SQL Server