montando um cubo olap

25
Montando um Cubo OLAP - Parte 04: Modelando dimensões de tipo Sexta-feira, 06/05/2005 às 13h27, por Mauro Pichiliani Compartilhar Na coluna desta semana vamos continuar a estudar o nosso cubo OLAP de telefonia. Vamos ver agora como foi feita a modelagem das dimensões que controlam o tipo de telefone. Para aqueles que não estiverem acompanhando a série de colunas, recomendo dar uma boa olhada nas colunas anteriores, para evitarem se sentirem ‘perdidos’. Na última coluna falamos um pouco sobre as dimensões e medidas do nosso cubo de telefonia. Chegamos ainda da explicar como a dimensão DIA_SEMANA seria implementada. Vamos agora ver como iremos implementar as dimensões que permitem o filtro do tipo de telefone. Para as implementar as dimensões de tipo de telefone, TIPO_NUMA e TIPO_NUMB, devemos obter as informações sobre qual é o tipo de telefone, que pode ser fixo ou móvel. A regra para a obtenção do tipo de telefone foi definida pelo especialista no domínio e já a descrevi na segunda parte da série de colunas. Basicamente o que devemos fazer é analisar o terceiro dígito do tipo de telefone: se for menor que sete é um telefone fixo e se for maior ou igual a sete, podemos considerar o número como sendo de um telefone móvel. Deste modo, para obtermos o tipo de telefone da coluna NumeroA e NumeroB da tabela DADOS_COLUNA_OLAP devemos utilizar a função SUBSTRING do SQL Server. As colunas vão se chamar LOG_NUMA_TIPO do tipo char(1), para o tipo de telefone que originou a ligação, e LOG_NUMB_TIPO do tipo char(1), para o tipo de telefone que recebeu a ligação. Estas colunas vão fazer parte da tabela fato TB_OLAP_TELEFONIA, que vamos criar mais para frente. O comando de exemplo que obtém os tipos de telefones dos primeiros 100 registros da tabela DADOS_COLUNA_OLAP é:

Upload: ygor-gonzaga

Post on 30-Jun-2015

1.248 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Montando um Cubo OLAP

Montando um Cubo OLAP - Parte 04: Modelando dimensões de tipoSexta-feira, 06/05/2005 às 13h27, por Mauro Pichiliani

Compartilhar  

Na coluna desta semana vamos continuar a estudar o nosso cubo OLAP de telefonia. Vamos ver agora como foi feita a modelagem das dimensões que controlam o tipo de telefone. Para aqueles que não estiverem acompanhando a série de colunas, recomendo dar uma boa olhada nas colunas anteriores, para evitarem se sentirem ‘perdidos’.

Na última coluna falamos um pouco sobre as dimensões e medidas do nosso cubo de telefonia. Chegamos ainda da explicar como a dimensão DIA_SEMANA seria implementada. Vamos agora ver como iremos implementar as dimensões que permitem o filtro do tipo de telefone.

Para as implementar as dimensões de tipo de telefone, TIPO_NUMA e TIPO_NUMB, devemos obter as informações sobre qual é o tipo de telefone, que pode ser fixo ou móvel. A regra para a obtenção do tipo de telefone foi definida pelo especialista no domínio e já a descrevi na segunda parte da série de colunas.

Basicamente o que devemos fazer é analisar o terceiro dígito do tipo de telefone: se for menor que sete é um telefone fixo e se for maior ou igual a sete, podemos considerar o número como sendo de um telefone móvel. Deste modo, para obtermos o tipo de telefone da coluna NumeroA e NumeroB da tabela DADOS_COLUNA_OLAP devemos utilizar a função SUBSTRING do SQL Server.

As colunas vão se chamar LOG_NUMA_TIPO do tipo char(1), para o tipo de telefone que originou a ligação, e LOG_NUMB_TIPO do tipo char(1), para o tipo de telefone que recebeu a ligação. Estas colunas vão fazer parte da tabela fato TB_OLAP_TELEFONIA, que vamos criar mais para frente. O comando de exemplo que obtém os tipos de telefones dos primeiros 100 registros da tabela DADOS_COLUNA_OLAP é:

SELECT TOP 100       SUBSTRING(NumeroA,3,1) AS LOG_NUMA_TIPO      ,SUBSTRING(NumeroB,3,1) AS LOG_NUMB_TIPOFROM DADOS_COLUNA_OLAP

O que fizemos em seguida foi montar a tabela dimensão para os tipos de telefones. Esta tabela dimensão será a mesma tanto para a dimensão TIPO_NUMA como para a dimensão TIPO_NUMB. Porém, ela será um pouco diferente da dimensão estrela DIA_SEMANA, que vimos anteriormente.

Como no tipo de telefone temos uma divisão lógica em fixos ou móveis, vamos agrupar os tipos de telefones nestas categorias. Quando agrupamos dados de uma tabela de dimensão em categorias estamos utilizando um conceito fundamental da teoria OLAP: a idéia de hierarquia. Esta hierarquia é simples para o nosso exemplo, pois todos os números que possuem o terceiro dígito compreendido entre zero e seis são agrupados no primeiro nível da hierarquia, no

Page 2: Montando um Cubo OLAP

grupo de telefones fixos. Os números que cujo terceiro dígito está entre sete e nove são armazenados no grupo de telefones móveis. O próximo nível desta hierarquia já é o dígito que identifica o tipo do telefone.

Para implementar dimensões com categorias utilizamos tabelas com relacionamento pai-filho. Esta terminologia é utilizada na teoria OLAP para nomear as tabelas que possuem uma coluna com a propriedade chave estrangeira que aponta para outra coluna da mesma tabela.

Alguns autores chamam isso de auto relacionamento ou relacionamento recursivo. Para as nossas dimensões de tipos de telefone vamos utilizar a tabela TB_TIPO_TEL, cuja estrutura é mostrada na Figura 1. Os dados desta tabela são mostrados na Figura 2.

Figura 1. Estrutura da tabela dimensão TB_TIPO_TEL

Figura 2. Dados da tabela TB_TIPO_TEL.

Percebam que a coluna ID_TIPO_TEL possui uma chave primária. Esta coluna vai se relacionar com as colunas LOG_NUMA_TIPO e LOG_NUMB_TIPO da tabela fato TB_OLAP_TELEFONIA e também com a coluna ID_PAI_TIPO_TEL da própria tabela TB_TIPO_TEL.

Notem também que para os ID_TIPO_TEL 10 e 11, não existe ID_PAI_TIPO_TEL, pois estas linhas fazem um nível da hierarquia. Os ID_TIPO_TEL 0,1,2,3,4,5 e 6 possuem ID_PAI_TIPO_TEL 10 e os restantes possuem ID_PAI_TIPO_TEL com o valor 11. Por solicitação dos usuários, colocamos na coluna NOME_TIPO_TEL a descrição do tipo e o dígito que identifica o tipo de telefone.

Para fazer o download do arquivo texto TB_TIPO_TEL.zip, contendo os dados no formato CSV compactados, clique aqui.

Page 3: Montando um Cubo OLAP

Mais um pequeno detalhe sobre estas dimensões: como a tabela TB_TIPO_TEL vai ser utilizada para duas dimensões diferentes, TIPO_NUMA e TIPO_NUMB, criamos duas views com os dados da tabela, para facilitar futuramente a criação do modelo multidimensional. O código abaixo mostra a criação das views VW_TIPO_NUMA e VW_TIPO_NUMB:

-- Cria a view para a dimensão TIPO_NUMACREATE VIEW VW_TIPO_NUMA ASSELECT ID_TIPO_TEL, NOME_TIPO_TEL, ID_PAI_TIPO_TELFROM TB_TIPO_TEL

GO

-- Cria a view para a dimensão TIPO_NUMBCREATE VIEW VW_TIPO_NUMB ASSELECT ID_TIPO_TEL, NOME_TIPO_TEL, ID_PAI_TIPO_TELFROM TB_TIPO_TEL

Grande abraço a todos e todas e até a próxima coluna.

Montando um Cubo OLAP - Parte 05: Modelando dimensões de EstadoSegunda-feira, 16/05/2005 às 13h15, por Mauro Pichiliani

Compartilhar  

Olá Pessoal. Vamos continuar falando sobre como montar um cubo com dados de telefona na coluna de hoje, onde vou explicar como modelamos as dimensões que permitem o filtro por estado e a dimensão de tempo.

Como vimos na última coluna, as dimensões TIPO_NUMA e TIPO_NUMB, responsáveis pelo filtro dos tipos de telefone de quem origina e de quem recebe a ligação, respectivamente, utilizam as informações obtidas através do terceiro dígito das colunas NumeroA e NumeroB, da tabela DADOS_COLUNA_OLAP.

Pois bem, para obtermos o estado de origem da ligação e o estado de destino vamos utilizar uma idéia semelhante. Mas antes é bom deixar claro que nem sempre podemos considerar como correta a informação do estado de quem fez a ligação e de quem recebeu a ligação, pois no caso de telefones móveis o proprietário pode estar falando de um estado que não é o estado de origem da linha. De acordo com os usuários e o especialista no domínio, esta consideração pode ser ignorada, pois na base de dados do projeto estas ocorrências representam uma porcentagem bem pequena de todas as ligações.

Para obtermos o estado dos números de origem e destino vamos observar os dois primeiros dígitos das colunas NumeroA e NumeroB e obter o código do estado, que também é conhecido como DDD. Para obtermos estas informações vamos utilizar novamente a função SUBSTRING(). As novas colunas vão se chamar

Page 4: Montando um Cubo OLAP

LOG_NUMA_ESTADO, para armazenar o estado de quem originou a ligação, e LOG_NUMB_ESTADO, para armazenar o estado de quem recebeu a ligação.

Estas duas colunas vão ser criadas na tabela fato TB_OLAP_TELEFONIA, que será gerada a partir das transformações necessárias na tabela DADOS_COLUNA_OLAP, de acordo com o que foi modelado. O comando que mostra como obter as colunas LOG_NUMA_ESTADO e LOG_NUMB_ESTADOS para as 100 linhas da tabela DADOS_COLUNA_OLAP é mostrado na Listagem 1.

Uma vez obtidas as colunas LOG_NUMA_ESTADO e LOG_NUMB_ESTADO, devemos nos preocupar agora com a tabela dimensão que vai se relacionar com estas colunas da tabela fato. Consultamos o especialista no domínio para esclarecer qual é a relação entre os estados e o código e ele nos indicou um arquivo no formato pdf armazenado no web site da ANATEL, que diz não só qual estado possui qual código, mas também de os possíveis municípios para determinado código de estado. Para o cubo OLAP só nos interessava o estado. O nome do arquivo é codigos_ordenado.pdf e para fazer o download deste arquivo basta acessar o seguinte link no web site da ANATEL:

http://www.anatel.gov.br/Tools/frame.asp?link=/telefonia_fixa/stfc/codigos/codigos_alfabetico.pdf

Porém, há um pequeno problema na base de dados que disponibilizei para teste. Como os dados da nossa base de teste, armazenados na coluna DADOS_COLUNA_OLAP, foram gerados aleatoriamente, alguns códigos de estados não existem, como é o caso do código de estado 20. Para resolver este problema, os códigos de estados que foram gerados aleatoriamente, e que não possuem um estado de acordo com a documentação da ANATEL, foram atribuídos a estados próximos. Por exemplo, o código 20 foi atribuído para o estado do Rio de Janeiro.

Com estes dados em mãos vamos modelar tabela de dimensão de estado. Da mesma maneira que as dimensões de tipo de telefone, as dimensões de estado também possuem uma hierarquia. Esta hierarquia pode ser demonstrada através dos dados do estado de São Paulo, que possui vários códigos, compreendidos entre 11 e 19.

Neste caso, existe uma hierarquia dos dados. Mas nem sempre isso é verdadeiro, como no caso do estado Acre que possui somente o código 68. Para resolver este problema, adicionamos uma coluna na tabela de dimensão TB_ESTADOS, que contém os códigos DDD por estado. No caso de hierarquias, como o grupo de linhas de São Paulo, uma letra será colocada na coluna para representar o grupo de códigos DDD. A estrutura da tabela TB_ESTADOS é mostrada na Figura 1.

Page 5: Montando um Cubo OLAP

Figura 1. Estrutura da tabela TB_ESTADOS.

Notem que na Figura 1 existe uma coluna chamada ID_ESTADO, chave primária da tabela, que contém um número identificador seqüencial para todos os registros. A coluna ID_PAI_ESTADO faz o relacionamento pai-filho através de uma chave estrangeira e a coluna DDD_ESTADO armazena o código do estado, de acordo com a informação obtida no arquivo da ANATEL e com letras para os grupos de linhas, como no caso do estado de São Paulo. Devido à necessidade de colocar letras na coluna DDD_ESTADO, o tipo de dados mais adequado para esta coluna foi o tipo varchar(2). Para fazer o download do arquivo texto TB_ESTADOS.zip, contendo os dados no formato CSV compactados, clique aqui.

A coluna DDD_ESTADO vai se relacionar, durante a montagem do modelo multidimensional, com as colunas LOG_ESTADO_NUMA e LOG_ESTADO_NUMB da tabela de fato TB_OLAP_TELEFONIA. Mas, da mesma maneira que as dimensões TIPO_NUMA e TIPO_NUMB, a tabela dimensão TB_ESTADOS vai ser utilizada em duas dimensões – ESTADO_NUMA e ESTADO_NUMB – e para isso precisamos criar duas views, que chamaremos de VW_ESTADO_NUMA e VW_ESTADO_NUMB, respectivamente. A Listagem 2 mostra a criação destas views.

Listagem 2. Script de criação das views VW_ESTADO_NUMA e VW_ESTADO_NUMB.

Com isso terminamos a modelagem das dimensões ESTADO_NUMA e ESTADO_NUMB. A última dimensão que faltou modelarmos foi a dimensão chamada TEMPO. Esta dimensão conterá os dados de forma hierárquica também: o mês, o dia, a hora e o minuto, esta ordem.

Esta dimensão não necessita de nenhuma tabela auxiliar ou transformação nos dados, pois todo o tratamento necessário será feito diretamente no Analysis Services. A coluna HoraFim da tabela DADOS_COLUNA_OLAP vai se chamar LOG_HORA da tabela fato TB_OLAP_TELEFONIA.

Page 6: Montando um Cubo OLAP

Clique aqui para o download.

Na próxima coluna vamos criar a tabela fato TB_OLAP_TELEFONIA e começar a trabalhar na implementação do nosso cubo de dados dentro do Analysis Services.

Grande abraço a todos e todas e até a próxima coluna.

SQL Server

Montando um Cubo OLAP - Parte 06: Criando a Tabela FatoTerça-feira, 24/05/2005 às 13h09, por Mauro Pichiliani

Compartilhar  

Olá Pessoal. Na coluna de hoje vamos dar continuidade à montagem do nosso cubo de dados criando a tabela fato e configurando o ambiente multi-relacional.

Revisando o que vimos até agora, temos o dados da bilhetagem telefônica armazenada na tabela DADOS_COLUNA_OLAP, que contém os dados importados do arquivo texto que disponibilizei na segunda parte desta série de artigos. Vimos como seriam modeladas as dimensões e as medidas do nosso cubo de dados. A seguir modelamos as seis dimensões que o nosso cubo de dados que são: DIA_SEMANA, ESTADO_NUMA, ESTADO_NUMB, TIPO_NUMA, TIPO_NUMB e TEMPO.

Vamos agora criar a tabela fato chamada TB_OLAP_TELEFONIA. Para criar esta tabela vamos utilizar as definições já vistas nos artigos anteriores. Basicamente o que vamos fazer é criar a tabela TB_OLAP_TELEFONIA a partir dos dados da tabela DADOS_COLUNA_OLAP, fazendo transformações nas colunas para facilitar os relacionamentos com as tabelas de dimensão. A Listagem 1 mostra como foi feita a criação da tabela fato TB_OLAP_TELEFONIA.

Page 7: Montando um Cubo OLAP

Listagem 1. Criação da tabela fato TB_OLAP_TELEFONIA e dos índices.

Além de criar a tabela TB_OLAP_TELEFONIA, a Listagem 1 mostra os comandos que fazem a criação da chave primária para a tabela e dois índices, com o objetivo de acelerar o acesso às consultar que forem feitas na tabela fato.

Para acelerar o acesso às tabelas de dimensão, que apesar de serem pequenas vão ser muito acessadas, é recomendo criar índices para elas também. A Listagem 2 mostra a criação das constraints e índices nas tabelas de dimensão que tornarão mais rápido o acesso aos dados

Listagem 2. Criação das constraints e índices nas tabelas de dimensão.

Page 8: Montando um Cubo OLAP

Com isso terminamos a parte de modelagem das tabelas do nosso modelo. O que temos a fazer em seguida é preparar a definição do nosso cubo de dados e a sua visualização. Todas as tabelas, índices e definições os objetos vistos até agora foram armazenados dentro de um banco de dados do SQL Server, que chamei de dbTelefonia, para separar os dados.

A seguir, vamos configurar o ambiente OLAP, para armazenar o nosso cubo de dados. Abrindo o Analysis Services, e clicando no nosso servidor, podemos ver que não existe nenhum banco de dados definido. Estes bancos de dados são apenas definições dos cubos, dimensões e outros objetos e que, por padrão, são armazenados dentro de um arquivo com extensão.MDB (Access). A Figura 1 mostra o servidor OLAP sem nenhum banco de dados definido.

Figura 1. Nenhum banco de dados criado no servidor OLAP.

Vamos criar um banco de dados chamado OLAP_Telefonia. Para isso devemos selecionar o servidor, que no meu caso de chama PICHILIANI, clicar com o botão direito e escolher a opção New Database, como a Figura 2 mostra. Digitem OLAP_Telefonia e pressionem o botão OK.

Page 9: Montando um Cubo OLAP

Figura 2. Criando um banco de dados OLAP.

Com esta ação criamos um banco de dados OLAP. O próximo passo é configurar qual será a base de dados que iremos utilizar para obter os dados que o nosso futuro cubos de dados consultará. Como dito anteriormente, o servidor OLAP da Microsoft pode trabalhar com qualquer banco de dados como fonte das informações, desde que este banco de dados possua um driver ODBC ou um provider OLE DB. No nosso caso, todas as informações estão no banco de dados dbTelefonia do SQL Server que se encontra na mesma máquina.

Para configurar o acesso aos dados, vamos expandir o banco de dados clicando no sinal de mais (+) e selecionar a pasta Data Sources. Pressionem o botão direito do mouse e escolham a opção New Data Source, para abrir a janela de configuração das propriedades de conexão, mostrada na Figura 3. Escolham a opção Microsoft OLE DB Provider for SQL Server na aba Provedor, como mostrado pela janela da Figura 3. A seguir pressionem o botão Avançar.

Page 10: Montando um Cubo OLAP

Figura 3. Janela de configuração para a escolha do provider OLE DB.

A aba conexão é onde devemos fornecer o nome ou endereço do servidor, as configurações de login e escolha do banco de dados que contém as informações. Recomendo habilitar a opção Permitir salvamento de senha, para evitar que o Analysis Manager pergunte novamente qual é a senha para esta fonte de dados durante a criação do cubo.

A Figura 4 mostra as configurações que utilizei, onde o servidor SQL Server estava sendo executado no mesmo servidor de OLAP, chamado de PICHILIANI. Após fornecerem todas as informações corretas, pressionem o botão OK e teremos finalizado a configuração da nossa fonte de dados

Page 11: Montando um Cubo OLAP

Figura 4. Configurações para acesso à fonte de dados.

Na próxima coluna vamos começar a implementar o nosso cubo OLAP, montado as dimensões e medidas.

Grande abraço a todos e todas e até a próxima coluna.

Montando um Cubo OLAP - Parte 12 (Visualizando o cubo no Excel)Segunda-feira, 15/08/2005 às 13h15, por Mauro Pichiliani

Page 12: Montando um Cubo OLAP

Compartilhar  

Olá Pessoal. Na coluna desta semana vamos aprender a utilizar o Excel para acessar o cubo de dados que foi montado nas colunas anteriores. Vamos ver como configurar o PTS (Pivot Table Services) para que ele acesse o Analisys Services de modo que os dados do cubo possam ser visualizados no Excel.

Para entender melhor sobre como funciona o acesso aos dados do cubo vamos falar um pouco sobre a arquitetura. Do lado do cliente nós teremos o Excel XP que contém um componente especial chamado PTS (Pivot Table Services).

O PTS é um midleware necessário para que os clientes acessem as informações que estão nos cubos de dados dentro Analisys Services e, além disso, é um componente invisível que fornece funcionalidades para a manipulação dos dados nas aplicações de terceiros, como o Excel ou aplicações que foram construídas pelo usuário utilizando linguagens de programação populares, como o VB ou ASP.

Para tanto, o PTS possui duas API’s para a programação: o OLE DB para OLAP e o ADO MD (Microsoft ActiveX Data Objects Multidimensional ).

A Figura 01 abaixo mostra como é relação do PTS com a aplicação.

Figura 01. Arquitetura de uma aplicação.

Pois bem, agora que já conhecemos o PTS vamos fazer o Excel se comunicar com o Analisys Services para podermos visualizar os dados do nosso cubo. Nas imagens desta coluna utilizei o Excel XP em inglês. Mas os passos aqui explicados podem ser facilmente seguidos com outras versões do Excel.

É possível que em algum momento o Excel solicite a instalação do English Query e, por isso, é bom ter em mãos o CD de instalação do Office durante os passos a seguir. Para evitar problemas com a permissão de acesso ao cubo utilizei o Excel na mesma máquina do Analisys Services. Caso contrário é preciso configurar a permissão de acesso ao cubo.

Page 13: Montando um Cubo OLAP

Vamos iniciar o Excel e, em uma nova planilha, vamos escolher a opção “Pivot Table and Pivot Chat Report”, do menu “Data”, como a Figura 02 mostra, para criarmos uma tabela dinâmica no Excel baseada em dados de uma fonte externa.

Figura 02. Escolhendo a opção que vai criar uma tabela dinâmica.

O próximo passo é indicar ao Excel que os dados são provenientes de dados de uma fonte externa e que queremos criar uma tabela dinâmica. A opção que permite criar um gráfico dinâmico será vista na próxima coluna, última da série, onde trabalharemos com gráficos para os dados do nosso cubo de telefonia.

A Figura 03 mostra a primeira janela do assistente de criação de tabela dinâmica onde escolhemos a opção “External Data Source” e a opção “PivotTable”.

Figura 03. Janela de configuração da fonte externa.

A segunda janela do assistente de criação de tabela dinâmica do Excel permite indicar onde iremos buscar os dados. Clique no botão “Get Data...”, como a Figura 04 mostra, para indicar que a nossa fonte de dados vai ser uma fonte de dados externa.

Page 14: Montando um Cubo OLAP

Figura 04. Janela de escolha da fonte de dados externa.

A próxima janela, que se parece muito com a janela de configuração de conexão ODBC, permite a criação de uma nova fonte de dados. Mas, como queremos criar uma conexão para uma fonte de dados que é um servidor OLAP, vamos até a aba “OLAP Cubes” e verificar que não existe nenhuma fonte de dados configurada.

Neste caso, devemos deixar a seleção da caixa de listagem no item “<New Data Source>” e clicar no botão OK, como pode ser visto na Figura 05.

Figura 05. Janela de criação de nova conexão com o cubo OLAP.

Na próxima janela devemos colocar um nome na nova conexão. Como estamos trabalhando com um cubo de dados chamado “OLAP_09_2004” vamos dar este nome para a conexão com o servidor Analisys Services.

Para o provider, vamos escolher a segunda opção, “Microsoft OLE DB Provider for Olap Services 8.0”, e clicar no botão “Connect...” para configurar o acesso à fonte de dados. A Figura 06 mostra a janela de criação da nova fonte de dados.

Page 15: Montando um Cubo OLAP

Figura 06. Janela de criação da nova fonte de dados.

Clicando no botão “Connect...” o assistente de configuração de conexão Multidimensional é iniciado. Nele vamos indicar quais as configurações necessárias para acessar a fonte de dados que contém o nosso cubo.

Um detalhe: não precisamos necessariamente trabalhar com dados de cubos que estão no servidor Analisys Services, pois o PTS permite que trabalhemos com cubos off-line, que nada mais são do que arquivos .cub que contém todas as informações do cubo de dados.

Esta opção é útil quando não temos a disponibilidade de um servidor OLAP. Como exemplo, podemos pensar em uma demonstração onde todos os arquivos .cub com os dados dos cubos estão gravamos em um CD.

Após a configuração do PTS no Excel podemos facilmente demonstrar todas as funcionalidades de visualização de dados sem necessitar do servidor Analisys Services. Caso desejarmos acessar um cubo off-line, devemos escolher a opção “Cube File”, mostrada na janela da Figura 07, e indicar o caminho (path) do arquivo .cub.

Continuando a nossa configuração, vamos identificar o servidor,o login e a senha do SQL Server. A Figura 07 mostra a janela de configuração da conexão Multidimensional.

Page 16: Montando um Cubo OLAP

Figura 07. Janela de configurações da conexão Multidimensional.

No próximo passo devemos escolher qual é o banco de dados do Analisys Services que queremos trabalhar.

Lembrem-se: um servidor Analisys Services pode conter vários bancos de dados, que podem conter várias conexões a servidores de bancos de dados (como o SQL Server ou o Oracle) e vários cubos de dados.

No nosso exemplo o banco de dados se chama OLAP_Telefonia e a Figura 08 mostra a escolha deste banco de dados para a conexão Multidimensional.

Figura 08. Escolhendo o banco de dados que contém os cubos.

Após a janela de escolha do banco de dados voltamos para a janela mostrada na Figura 06, mas agora com a opção de escolha de cubo habilitada. Vamos escolher

Page 17: Montando um Cubo OLAP

o único cubo do nosso banco de dados, OLAP_09_2004, e marcar a opção “Save my user ID and password in the data source definition”, para que o excel não pergunte a senha de acesso ao banco de dados ao abrirmos esta planilha.

Agora o que temos a fazer é fechar a janela mostrada na Figura 06, escolher a opção OLAP_09_2004 que está disponível na janela mostrada na Figura 05 e finalizar o assistente clicando no botão “Finish” da Janela 4. Isso faz com o que o Excel permita a colocação das dimensões e medidas do cubo de dados que criamos na tabela dinâmica da planilha.

A Figura 09 mostra as áreas da tabela dinâmica na qual podemos colocar as dimensões e medidas junto com as barras de ferramentas. Para facilitar a identificação dos elementos do Excel, uma numeração foi colocada nos elementos da Figura 09.

Figura 09. Áreas da tabela dinâmica e barras do Excel.

As áreas marcadas na Figura 9 são descritas a seguir:

1) Barra PivotTable. Esta barra é útil para configurar as opções gerais da tabela dinâmica.

2) Barra de campos. Esta barra serve para colocar as dimensões e medidas do cubo de dados dentro da tabela dinâmica. Notem que as dimensões possuem um ícone diferente das medidas.

3) Área de Página de Campos. Nesta área somente dimensões podem ser colocadas. Para colocar uma dimensão nesta área basta clicar no nome da dimensão na Barra de campos e arrastá-la para esta área. As dimensões que estiverem nesta área não se modificaram quando o usuário fizer um drill-down ou um drill-up.

Page 18: Montando um Cubo OLAP

4) Área de Coluna de Campos. Nesta área somente dimensões podem ser colocadas. Quase idêntica à Área de Página de Campos, todas as dimensões que estiverem nesta área são modificadas quando o usuário faz um drill-down ou um drill-up. Equivale ao eixo X de uma expressão MDX

5) Área de Linha de Campos. Nesta área somente dimensões podem ser colocadas. Idêntica à Área de Coluna de Campos, porém esta na vertical. Equivale ao eixo Y de uma expressão MDX.

6) Área de Itens de Dados. Nesta área somente medidas podem ser colocadas. É nesta área que o valor medidas vão ser mostradas para o usuário.

Vamos ‘brincar’ um pouco com a nossa tabela dinâmica colocando as dimensões e medidas do cubo de dados na planilha do Excel. Para isso, cliquem e arrastem as dimensão e medidas desejadas posicionando-as nas devidas áreas.

Como exemplo, coloquei as medidas DIA_SEMANA, ESTADO_NUMA, ESTADO_NUMB, TIPO_NUMA e TIPO_NUMB na Área de Página de Campos (3) e a dimensão TEMPO na Área de Linhas de Campos(5). Coloquei a medida MINUTAGEM na Área de Itens de Dados (6). O resultado pode ser visto na Figura 10.

Page 19: Montando um Cubo OLAP

Figura 10. Dados do cubo sendo mostrados no Excel.

Notem que na Figura 10 as células que contém a medida MINUTAGEM não possuem nenhuma formatação. Para formatá-las, posicionem o curso sobre qualquer uma das células da tabela que possuem o valor da medida MINUTAGEM e cliquem no botão “Field Settings” da barra PivotTable (é o segundo botão da direita para esquerda, na parte de baixo da barra). Cliquem no botão “Number...” da janela e escolham a formatação adequada para o número.

Page 20: Montando um Cubo OLAP

Outro detalhe que podemos ver na tabela dinâmica é o total geral. Para retirar este total geral, e alterar outras propriedades da tabela, basta colocar o cursor sobre qualquer uma das células da tabela, escolher o menu PivotTable da barra Pivot Table (onde está escrito PivotTable com uma seta ao lado) e escolher a opção “Table Options...”.

Outro manipulação interessante que o Excel nos fornece é a escolha individual de somente alguns membros de uma dimensão. Por exemplo, se clicarmos na seta da caixa de itens da medida ESTADO_NUMB temos a opção “Select Multiple items” que habilita a escolha de somente alguns itens de uma dimensão, como a Figura 11 mostra.

Figura 11. Escolhendo somente alguns membros da dimensão ESTADO_NUMB.

Da mesma maneira que o Cubo Browser do Analisys Manager o Excel permite drill-down e drill-up nos membros das dimensão que fazem parte da tabela dinâmica através do duplo clique, assim como a possibilidade de pivotar as dimensões, isto é, trocar qualquer dimensão de posição com outra, simplesmente arrastando as dimensões.

Eu recomendo aos leitores que façam manipulações na tabela dinâmica do Excel com o objetivo de explorar as possibilidades de visualizações de dados. Após a manipulação, basta salvar a planilha do Excel em um arquivo .xls e todas as definições da conexão já estarão armazenadas. Clique aqui para o download.

Na próxima coluna vou mostrar como visualizar os dados deste cubo em gráficos do Excel e responder às questões dos usuários levantadas na fase inicial do projeto, que foi descrita na segunda parte desta série de colunas.

Até lá pessoal!