Hoje!

/Banco de dados

voltar
/Banco de dados

Montando um Cubo OLAP: Entendendo o problema

PorMauro Pichiliani em

Olá pessoal. Na coluna de hoje vou continuar
com a série de matérias que vão explicar
como montar um cubo de dados OLAP com SQL Server e o Analysis
Services. Nesta coluna vamos entender um pouco sobre o problema
e as necessidades dos usuários no projeto que estive envolvido.

Mas antes de começar, gostaria de agradecer
a todos os internautas que votaram no iMasters para a campanha
do iBest 2005. Independente do resultado, gostaria de deixar registrado
aqui o meu agradecimento pelo carinho de todos vocês que
colaboraram votando no iMasters para o prêmio iBest 2005.
Valeu galera!

Bom, voltando ao assunto da coluna de hoje, vamos
entender um pouco mais sobre as características do projeto
em que estive envolvido. Mas antes gostaria de agradecer a empresa
OWI – One World Interactive do Brasil por permitir a divulgação
dos detalhes deste projeto.

O projeto está ligado ao ramo da telefonia.
Durante as fases iniciais do projeto, que englobam o levantamento
de requisitos e análise, descobrimos várias necessidades
por parte dos usuários que nos permitiram tomar conhecimento
sobre o domínio do problema.

Em termos simples, podemos dizer que o projeto
tem como objetivo facilitar a visualização de informações
sobre ligações telefônicas. Em entrevistas
com usuários, percebemos que diferentes usuários
precisavam de uma maneira simples, rápida e fácil
de enxergar os dados para que eles possam tomar decisões
estratégicas a respeito de algum produto ou mesmo sobre
ações de marketing. Algumas frases de usuários
que consideramos relevantes:

“ – Preciso visualizar
quantos minutos foram gastos em ligações telefônicas
feitas de celulares móveis para celulares móveis
nos finais de semana. ”

“ – Qual é
o tempo médio de ligações, separadas por
região, durante os dias da semana ?”

“ – Após
a meia noite, quantos ligações de telefones fixos
de São Paulo foram feitas para telefones móveis
do Rio de Janeiro ?”

“ – Há
como montar um gráfico comparando a quantidade de minutos
de todas as segundas-feiras só com os telefones fixos ?
E com os telefones móveis e fixos ?“

Com base nestas e em outras informações,
a equipe do projeto verificou que os usuários precisavam
de muita flexibilidade, tanto na especificação do
formato de visualização dos dados como nos parâmetros
de pesquisa. Isso já deu uma dica para a arquitetura da
solução, uma vez que aplicações tradicionais
não seriam viáveis como solução, pois
mesmo desenvolvendo muitas query’s de pesquisa poderíamos
ter problemas na formatação dos resultados e na
geração de gráficos.

Durante a fase de Análise, a equipe conheceu
um pouco mais sobre a fonte destas informações.
Em termos de telefonia, vários equipamentos registram um
log de cada ligação que foi feita. Este log é
conhecido como bilhete, utilizado para vários propósitos.

Como exemplo de equipamentos que geram este tipo
de log, podemos citar vários tipos de bilhetadores, equipamentos
de PABX, CD-R de centrais telefônicas e gateways que utilizem
a tecnologia VOIP (Voz sobre IP) que atualmente estão em
alta na área de T.I., por se utilizarem tecnologia que
promete uma redução significativa em custos.

Para fins didáticos, vamos trabalhar com
bilhetes que possuem toda a informação que precisamos.
Infelizmente o mundo real não é tão caridoso
e, freqüentemente, temos que trabalhar com informações
incompletas, ambíguas e pouco confiáveis. No projeto
em questão sempre tivemos a garantia de ter em mãos
os dados necessários gerados por equipamentos próprios,
que já estavam ajustados, calibrados e com um bom grau
de confiabilidade.

Para entender melhor como estes bilhetes funcionam,
vamos ver um exemplo. A Figura 1
mostra 10 bilhetes que representam 10 ligações telefônicas.


Figura 1. Dez bilhetes de ligações
telefônicas.

É bom deixar claro logo no início
que diversos equipamentos de telecomunicações podem
gerar bilhetes com muito mais informações do que
as fornecidas pelos bilhetes da Figura 1. Para não fugir
do escopo do projeto, a equipe escolheu trabalhar somente com
este tipo de informação, uma vez que com estas informações
conseguiríamos atender os requisitos especificados durante
as fases iniciais do projeto.

Analisando com mais detalhes os bilhetes, começamos
a entender o seu funcionamento. A descrição das
colunas é feita abaixo:

HoraFim: Nesta coluna temos a
data e hora final da ligação. Na maioria dos dispositivos
e bilhetadores, o bilhete somente é gravado no final da
ligação, o quê explica por quê temos
somente a hora final. Para facilitar a manipulação
dos dados, esta coluna é do tipo DATETIME. Podemos perceber
que o equipamento consegue armazenar a hora com precisão
de mili-segundos.

Duração: Esta coluna
armazena a duração da ligação em segundos.
Apesar de possuirmos a duração em segundos, quem
trabalha com telecomunicações geralmente utiliza
a medida de minutos ou pulsos. Outro detalhe é que os equipamentos
não geram valor monetário, pois isso pode depender
de vários fatores, como horário, tipo de telefone
de destino, operadora, etc.

Mais um detalhe: se subtrairmos o valor da coluna
duração em segundos do valor contido na coluna HoraFim,
podemos obter a data e hora de início da ligação.
Esta coluna foi criada com o tipo de dados INT.

NumeroA: Nesta coluna temos o
número telefônico que originou a chamada. Este valor
é chamado de número de A, pois faz uma analogia
com a idéia de comunicação de dois pontos,
onde o ponto que inicia a chamada é chamado de A e ponto
que recebe a chamada é o ponto B.

Com o valor contido na coluna NumeroA podemos obter
várias informações. Os dois primeiros dígitos,
da esquerda para a direita, indicam de qual DDD o número
de A possui, ou seja, podemos identificar de qual estado é
o aparelho que iniciou a chamada. Outra informação
importante é revelada pelo terceiro dígito, que
pode nos indicar se o aparelho é um telefone móvel
ou fixo. Conversando com especialistas no domínio obtivemos
as seguintes regras:

01.
Se o terceiro dígito estiver entre compreendido entre 1
e 6 podemos considerar como um aparelho que utiliza a rede de
telefonia fixa;

02.
Caso contrário, ou seja, se o terceiro dígito for
7, 8 ou 9 podemos considerar como um aparelho que utiliza a rede
de telefonia móvel.

Várias outras informações
podem ser derivadas a partir do número de A, como o nome
da operadora ou informações mais específicas
de região. Outro detalhe é que, no caso de ligações
de longa distância, poderíamos obter qual a operadora
utilizada se o que realmente foi discado pelo usuário que
fez a ligação for armazenado na coluna NumeroA.
Porém, estas informações não faziam
parte do escopo do projeto e, portanto, não serão
consideradas nos artigos.

O tipo de dados escolhido para a coluna NumeroA
foi o CHAR(10), pois todos os dados
gerados continham 10 caracteres exatos, sem nenhuma exceção.

NumeroB: Esta coluna possui o
mesmo formato da sua contrapartida NumeroA, porém esta
coluna armazena o número de quem recebeu a ligação.
Informações análogas às obtidas pelo
valor armazenado na coluna NumeroA podem ser obtidas pela valor
contido na coluna NumeroB.

ID: Esta coluna armazena um valor
numérico que é o identificador único de cada
ligação. Para fins didáticos, este valor
inicia com 1 é possui o incremento de 1. Esta coluna é
a chave primária da tabela e o seu tipo de dados é
INT.

Para que os leitores possam acompanhar e reproduzir
o que vai ser explicado nesta série de colunas, vou disponibilizar
dados gerados randomicamente, de acorro com o formato do bilhete
descrito acima, para download aqui no iMasters. Esta tabela, que
contém os dados sem nenhuma transformação,
será chamada de DADOS_COLUNA_OLAP. O arquivo
texto contém 500.000 registros de ligações
fictícias de todos os dias do mês de setembro de
2004.

O arquivo está no formato onde o separador
de coluna é a vírgula (.) e o separador de linha
é o famoso CR+LF. Para fazer o download
do arquivo DADOS_COLUNA_OLAP.zip, de 9.6
MB
, contendo o arquivo texto pronto para a importação,
clique
aqui
.

Na próxima coluna vou falar um pouco sobre
a modelagem, arquitetura escolhida e tecnologia utilizada para
este projeto.

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

Deixe um comentário! 10

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Comentando como Anônimo

  1. Gostaria de ter passo a passo a montagem do cubo em Analysis sevice
    Cheguei até a tabela fato, porem na hora de montar a minha apostila nao é compativel com o analysis service do sql 2008
    gostaria de terminar a montagem do meu cubo.
    Abraços

  2. Mauro Pichiliani,

    Precisei criar um Cubo OLAP e me deparei com os tutoriais.

    Montando um Cubo OLAP: Instalando o Analysis Services SQL Server
    Montando um Cubo OLAP – Parte 03: Arquitetura e Modelagem SQL Server
    Montando um Cubo OLAP – Parte 04: Modelando dimensões de tipo SQL Server
    Montando um Cubo OLAP – Parte 06: Criando a Tabela Fato SQL Server
    Montando um Cubo OLAP – Parte 07 (Implementação a primeira dimensão e SQL Server
    Montando um Cubo OLAP – Parte 09: Implementando as dimensões de Estado SQL Server
    Montando um Cubo OLAP – Implementando a dimensão de Tempo – Parte 10 SQL Server
    Montando um Cubo OLAP (Implementando as Medidas Finais) – Parte 11 SQL Server
    Montando um Cubo OLAP – Parte 12 (Visualizando o cubo no Excel) SQL Server
    Montando um Cubo OLAP – Parte 13 (Gráficos com dados OLAP no Excel) SQL Server

    Desta forma, pelo tempo de publicação, gostaria de saber se a lista acima é todo o tutorial.

    Se não for há a possibilidade de me encaminhar as informações faltantes?

    Att
    Cláudio Souto
    61 9831-9381

    1. Olá Claudio,

      Você esqueceu de citar alguns artigos nesta sua lista. Faltou a parte 2 e a parte 5, que estão publicados aqui no iMasters e também estão no cd com o curso de SQL vendido no iMasters Shop

      Mauro Pichiliani

  3. Bom dia.
    Os links estão quebrados, não consigo acessar a sequencia deste artigo.
    Poderiam corrigir os links ou enviar todos os artigos relacionados.
    Obrigado,
    Alexandre

leia mais
Este projeto é mantido e patrocinado pelas empresas: