Sie sind auf Seite 1von 286

Do Banco de Dados Relacional à Tomada de Decisão

DO BANCO DE DADOS
RELACIONAL À TOMADA
DE DECISÃO

Aprenda como sair do banco de dados


convencional e criar um ambiente completo de
suporte à tomada de decisão!

Diego Nogare

MVTech · 2
Do Banco de Dados Relacional à Tomada de Decisão

MVTech · 3
Do Banco de Dados Relacional à Tomada de Decisão

À minha família.

MVTech · 4
Do Banco de Dados Relacional à Tomada de Decisão

Primeiramente gostaria de agradecer a todos que, durante estes


anos de estudo e aprendizagem de SQL Server, acompanharam meus
trabalhos - seja como leitor do blog, como conferencista em congressos
ou seminários, como participante em palestras, como aluno em
treinamentos oficiais Microsoft ou da NGR Solutions, ou mesmo aluno em
cursos de Graduação ou Pós-Graduação, como colegas de profissão e
amigos. Tive o imenso prazer de trocar experiências e aprender com cada
um de vocês.

Não posso deixar de dizer que tive MUITA SORTE em conhecer


profissionais de SQL Server de vários os lugares do mundo. Brasil, Espanha,
Índia, Estados Unidos, Trinidad e Tobago, México, Costa Rica, Portugal,
Chile e Argentina são só alguns desses países. Aprendi com cada um deles
um pouco de cultura e costumes locais. Mesmo não conhecendo todos os
países em que eles vivem, consegui ter uma visão de como é o mercado
de trabalho e como vivem as pessoas destes lugares.

Entendendo esse cenário globalizado e olhando principalmente


para o Brasil, meu maior objetivo com este livro é permitir que você possa
criar um ambiente de Business Intelligence dentro da sua empresa, para
melhorar a tomada de decisão dos líderes que trabalham contigo. O
objetivo não é aprofundar em assuntos teóricos, que são importantes para
um ótimo trabalho. Mas em um momento de objetividade e entrega de
resultados, os textos aqui apresentados são focados em exemplos
práticos.

Para este estudo contínuo que será feito no decorrer do livro, os


projetos e bancos de dados que são apresentados tem por objetivo o
estudo e o aprendizado de técnicas de mercado para o SQL Server e
Business Intelligence. Ambos Databases podem ser baixados no portal

MVTech · 5
Do Banco de Dados Relacional à Tomada de Decisão

Codeplex (http://www.codeplex.com) procurando-se pelos nomes


AdventureWorks2012 e/ou AdventureWorksDW2012, ou por meio do
acesso direto da página do projeto
(http://www.msftdbprodsamples.codeplex.com). Estes Databases são
mantidos pela comunidade e também time de desenvolvimento da
Microsoft.

Os exemplos criados durante o livro podem ser baixados


diretamente do meu site, acessando o link:

http://www.diegonogare.net/Livro_BI_2014.zip

Quero agradecer aos meus nobres amigos Thiago Zavaschi que


escreveu o prefácio desta publicação, Luan Maciel Moreno que revisou
tecnicamente os capítulos garantindo uma conclusão práticas dos
exemplos e Renato Cairo por fazer a validação gramatical dos textos.

Também quero deixar registrada a colaboração da minha esposa


Laysa Nogare. Foi ela quem me incentivou e, mesmo esperando nossa
primeira filha, permitiu que este livro saísse do zero e chegasse até você
com uma sequência lógica de ideias e com uma forma de escrita mais
adequada. Sem ela, este livro seria um grande post de blog! Obrigado,
Laysa!

MVTech · 6
Do Banco de Dados Relacional à Tomada de Decisão

Para uma corporação ter sucesso nos negócios, um dos fatores


mais importantes é a tomada de decisões de maneira assertiva. Para tal, é
necessário bom embasamento sobre o ritmo do negócio sobre diferentes
visualizações. Este conhecimento é originado por meio de ferramentas
para análise dos dados gerados pela própria empresa. Ferramentas para
este fim são necessárias para análises poderem ocorrer sobre grandes
volumes de dados, pois a análise manual neste caso pode levar a erros e
decisões incorretas.

Existem algumas “formas diferentes” de se fazer BI (Business


Intelligence). Estas podem ser agrupadas em dois grandes grupos, um
chamado de self-service BI e outro de BI corporativo. O presente livro é
focado no que chamamos de BI corporativo, que serve principalmente
para as decisões de negócio da corporação como um todo.

Neste livro é apresentado de forma prática como lidar com as


principais dificuldades iniciais que deverão ser enfrentadas (muitas das
quais enfrentadas por mim quando comecei nesta área) por quem está se
aventurando nesta jornada chamada de Business Intelligence (Inteligência
de Negócio).

O Diego começa fazendo uma introdução ao conceito principal de


BI, bem como outros conceitos que irão lhe acompanhar no início, meio e
final de seus projetos - ou seja, pelo resto da vida. Serão ferramentas,
conceitos, siglas e estruturas novas... não desista! É comum acreditar que
o volume de informações a serem aprendidas é grande. E de fato é, mas
este livro deve te ajudar a dar os primeiros passos neste mundo de
consultas multidimensionais, bases de dados desnormalizadas, relatórios,
indicadores, etc.

Conceitos são importantes - tão importantes quanto aprender a


sair da inércia e ganhar tração quando se está estudando ou

MVTech · 7
Do Banco de Dados Relacional à Tomada de Decisão

desenvolvendo um projeto desta natureza. Para isso, é apresentado de


maneira bastante detalhada como ir “do banco relacional à tomada de
decisão”.

Um projeto de BI envolve diversas etapas. Começamos pela


extração dos dados dos sistemas de produção, realizada por ferramentas
que realizam o que chamamos de processo de ETL (Extract, Transformation
and Load) a ser realizada pelo Integration Services (SSIS) no nosso caso,
para constituirmos uma nova base conhecida como Data Warehouse (DW).
Esta base é o que será usado de fato para alimentar nossa ferramenta
analítica (SSAS) e posteriormente ser entregue de diferentes formas. Entre
elas, podemos citar os relatórios através do Reporting Services (SSRS).
Todas estas etapas estão retratadas na páginas seguintes.

Tive a oportunidade de ler os originais do livro antes do público


em geral e sei que ele pode ajudar nas tarefas simples, porém comuns
nesse mundo. Obrigado pelo convite, meu amigo!

Agora convido a todos a desfrutarem deste livro para aprender a


como criar um BI na sua empresa. E que os desafios enfrentados se tornem
mais amigáveis depois de lê-lo. :-)

Thiago Zavaschi – Premier Field Engineer em Business Intelligence


– Microsoft

MVTech · 8
Do Banco de Dados Relacional à Tomada de Decisão

O Minha Vida (http://www.minhavida.com.br) é uma empresa com


um grande propósito: melhorar a qualidade de vida da população.
Queremos ser capazes de despertar nas pessoas o cuidado com a sua
própria saúde. E quando falamos em saúde, nos referimos não só à
prevenção ou ao tratamento de doenças, mas também a pequenas
mudanças de hábitos capazes de transformar positivamente o dia a dia
das pessoas.

Queremos fazer diferença na vida das pessoas!

Pensando nisso, nosso time de tecnologia criou o MVTech, uma


iniciativa para disseminar conhecimento através de iniciativas de seus
colaboradores, buscando o aprimoramento do mercado nacional.

Com diversas ações como: artigos técnicos em blogs; matérias


para portais; respostas em foruns de discussão, palestras em eventos,
eventos presenciais e online, etc… afinal, somos apaixonados pelo que
fazemos! por que não compartilhar nossa paixão?

A criação do MVTech dá um passo adiante nesta linha de


compartilhamento de conhecimento, passando a existir um canal oficial
onde poderão ser encontrados grandes conteúdos.

Seja bem vindo ao MVTech

Alexandre Tarifa – Diretor de Tecnologia – Minha Vida

MVTech · 9
Do Banco de Dados Relacional à Tomada de Decisão

APRESENTAÇÃO __________________________________________ 5

PREFÁCIO _______________________________________________ 7

MVTECH ________________________________________________ 9

SUMÁRIO ______________________________________________ 10

INTRODUÇÃO AO DATA WAREHOUSE _________________________ 14

TABELAS DIMENSÕES _____________________________________ 21

DIMENSÃO DE TEMPO ____________________________________ 25

TABELAS FATOS __________________________________________ 27

MEASURES _____________________________________________ 30

INTRODUÇÃO BUSINESS INTELLIGENCE _______________________ 32

IMPORTANDO DADOS COM SQL SERVER 2014 IMPORT AND EXPORT


DATA __________________________________________________ 44

IMPORTANDO DADOS COM SQL SERVER INTEGRATION SERVICES 2014


______________________________________________________ 59

MVTech · 10
Do Banco de Dados Relacional à Tomada de Decisão

TIPOS DE CONEXÕES NO SSIS _______________________________ 72

PROCESSANDO O CUBO ATRAVÉS DO SSIS _____________________ 85

PUBLICANDO SEU PACOTE DO SSIS ___________________________ 94

CRIANDO UM JOB PARA AUTOMATIZAR A EXECUÇÃO DO PACOTE__ 101

CRIANDO SEU PRIMEIRO CUBO COM O SSAS __________________ 110

COMO CRIAR UMA MEASURE CONVENCIONAL NO SSAS _________ 118

COMO CRIAR UMA MEASURE CALCULADA NO SSAS _____________ 122

MANIPULANDO MEMBROS E ATRIBUTOS DE DIMENSÕES ________ 128

CRIANDO UMA HIERARQUIA DE MEMBROS DA DIMENSÃO _______ 139

COMO CRIAR E USAR KPI NO SSAS __________________________ 148

INTERNACIONALIZANDO SEU PROJETO COM O TRANSLATE _______ 156

PROCESSANDO E PUBLICANDO O CUBO ______________________ 163

PROCESSAMENTO DO SSAS, DIRETO AO PONTO! _______________ 173

ACESSANDO O CUBO ATRAVÉS DO EXCEL 2013 ________________ 177

REPORTING SERVICES CONFIGURATION MANAGER _____________ 186

MVTech · 11
Do Banco de Dados Relacional à Tomada de Decisão

SHARED DATA SOURCE E SHAREDDATASET____________________ 195

CONTRAINDO E EXPANDINDO RESULTADOS, COMO HIERARQUIAS _ 202

RELATÓRIO COM LINHAS ZEBRADAS _________________________ 220

PUBLICANDO E ACESSANDO O RELATÓRIO ____________________ 228

COMO INSERIR GAUGE NO RELATÓRIO_______________________ 234

PARAMETRIZANDO VALOR MÁXIMO NO GAUGE _______________ 247

COMO INSERIR 2 PONTEIROS NO GAUGE _____________________ 258

DRILLDOWN NO REPORTING SERVICES _______________________ 266

PERSONALIZANDO PALETA DE CORES DO GRÁFICO _____________ 280

CONCLUSÃO ___________________________________________ 286

MVTech · 12
Do Banco de Dados Relacional à Tomada de Decisão

CONCEITOS DE
BUSINESS
INTELLIGENCE E DATA
WAREHOUSE

MVTech · 13
Do Banco de Dados Relacional à Tomada de Decisão

Resumindo, o Data Warehouse é a reorganização dos dados


estruturados de forma desnormalizada. Ele visa a melhoria contínua na
entrega de informação ágil e precisa para os tomadores de decisões. O
mais importante em um projeto de Data Warehouse é responder questões
das áreas de negócios, sempre buscando o alinhamento com a proposta
de valor da empresa. Diversas publicações acadêmicas denominam o Data
Warehouse como um Sistema de Suporte a Decisão (e eu particularmente
concordo com esta denominação), já que a modelagem do DW é usada
com foco em agilizar a análise e permitir uma melhor tomada de decisão.

É um desafio para profissionais de banco de dados relacional


mudar a forma de pensar e possibilitar a criação do Data Warehouse. Visto
que todos os estudos e casos de sucesso da utilização de dados
normalizados, evitando redundância e criando os relacionamentos entre
as tabelas, precisam ser modificados para modelar os dados de forma
desnormalizada e redundante.

Ao se trabalhar com desnormalização dos dados, não é a


diminuição de espaço em disco utilizado que se busca, mas sim a
velocidade na resposta. Quando os dados estão todos redundantes e
calculados na modelagem do Data Warehouse, o espaço utilizado pelo
armazenamento destes dados aumenta. Isso acontece porque os dados se
repetem diversas vezes, caracterizando a desnormalização e melhorando
a performance dos resultados das consultas.

O custo com processamento, memória, I/O no disco, entre outros,


tende a aumentar, mas o benefício de ter a resposta para os tomadores de
decisão deve ser levado em conta para equilibrar a comparação do custo
versus benefício. Na maioria dos casos o orçamento que a área de TI
possui é um rateio do orçamento das áreas de negócios que consomem
serviços da área de TI. Uma estratégia usada em diversas empresas é

MVTech · 14
Do Banco de Dados Relacional à Tomada de Decisão

dividir os custos de hardware – provenientes da aquisição de novos


servidores – entre a área de negócio solicitante e a área de TI.

Ao se criar o DW, é preciso ter em mente quais são as questões


que precisam ser respondidas para a área de negócios que solicitou o
projeto. Possuir um relacionamento saudável com a área de negócios é
vital para que se consiga modelar as Dimensões e Fatos, que serão
explicados mais à frente, do projeto condizente com suas necessidades. É
inútil desenvolver um projeto de BI, que na maioria das vezes é longo e
custoso para a empresa, se ele não responder nenhuma das perguntas que
precisam ser respondidas para a área de negócios e não auxilia as tomadas
de decisões.

A montagem do Data Warehouse geralmente consome mais


tempo do que as outras tarefas que serão desenvolvidas. Pesquisas
apontam que o ETL (Extraction, Transformation and Loading, ou Extração,
Transformação e Carga) consome em média 70% do tempo do projeto.
Este processo é responsável por extrair dados de uma ou diversas fontes
(Extraction); transformar, limpar e adequar os dados destas fontes em algo
útil para o projeto (Transformation); e por fim carregar esses dados
transformados em uma outra base de dados (Loading). Por meio do
processo de ETL, é possível conectar-se a diversas fontes de dados, seja
SQL Server, Oracle, DB2, arquivos XML, TXT, CSV, etc. É possível também
escrever em diversas fontes de dados, inclusive os citados acima.

Como explicado na apresentação, vamos criar o ambiente de DW


consumindo a base de dados Adventure Works, que é um SQL Server
relacional. A modelagem do Data Warehouse, apesar de seguir um
conceito totalmente diferente, utiliza o mesmo motor de dados relacional.
O motor analítico só é utilizado quando se cria o projeto do Analysis
Services, e este sim é um motor diferente do ambiente relacional.

No desenho da arquitetura de uma Dimensão do Data Warehouse,


existem duas modelagens que são amplamente estudadas e utilizadas:
Snowflake Schema e Star Schema. Elas se diferem pela modelagem da
estrutura do ambiente e desempenho no processamento.

MVTech · 15
Do Banco de Dados Relacional à Tomada de Decisão

As duas modelagens serão explicadas com mais detalhes nos


tópicos seguintes, mas explicando em linhas gerais o Star Schema é a
modelagem na qual as dimensões se conectam diretamente à fato sem
nenhuma sub-dimensão ou dimensão intermediária com os dados
redundantes e as tabelas desnormalizadas. Já na modelagem Snowflake,
quando observa-se a Fato e seus relacionamentos, é possível encontrar
sub-dimensão ou dimensão intermediária entre as tabelas, e uma breve
lembrança de modelagem normalizada.

Quando se faz a modelagem do Data Warehouse, nem tudo que


existe na tabela de origem da base de dados relacional deve ser carregada
nas Dimensões. Uma informação muito importante para o ambiente
relacional pode ser completamente desnecessária para o DW. Imagine um
cenário no qual se analisa o poder de compra de Homens e Mulheres do
ponto de vista de um determinado produto. Neste cenário pode-se levar
em consideração informações como Bairro, Cidade, Estado, País e Sexo,
mas são desnecessários os dados como E-Mail ou Telefone.

As tabelas Dimensões armazenam os dados detalhados de um


grupo específico, consumindo dados de uma ou mais tabelas. Sendo
assim, a Dimensão de Cliente possui os dados relativos a clientes,
enquanto a Dimensão de Pagamento possui os dados de pagamentos e
assim por diante. Estas dimensões não precisam se comunicar entre si,
podendo se comunicar exclusivamente com a tabela Fato. Nesta tabela
Fato é onde se faz o relacionamento para encontrar um Cliente que fez
um determinado Pagamento.

Também é com base nas Dimensões que as Medidas (Measures)


são derivadas ou desagrupadas (especializadas). Estas Medidas são
agrupadores calculados com base em informações existentes na tabela
Fato, mas não são criadas dentro do Data Warehouse. As medidas são
criadas dentro da ferramenta que faz, de fato, a criação do ambiente OLAP
(On Line Analytical Processing). Quando a modelagem da tabela Fato
possui uma coluna em que será calculada e gerada uma Medida, são
utilizadas outras colunas da mesma tupla (conjunto de colunas de uma

MVTech · 16
Do Banco de Dados Relacional à Tomada de Decisão

mesma linha) para realizar a derivação e/ou desagrupamento desta


Measure (medida), permitindo chegar no detalhe daquele agrupador. Para
facilitar o entendimento, imagine um cenário onde uma tabela Fato possui
os campos CodCliente, CodProduto e Valor. A coluna CodCliente faz
relacionamento à tabela Dimensão de Clientes, a coluna CodProduto faz
relacionamento à tabela Dimensão de Produtos e a coluna Valor é um
dado redundante da tabela Dimensão de Produtos, justamente para
permitir a criação da medida na tabela Fato. Quando se cria o cubo, por
exemplo, no Analysis Services, esta coluna Valor da tabela Fato será
calculada e somará todos os valores, chegando a um somatório de todas
as vendas realizadas, independente do produto ou cliente. Esta medida
poderá ser derivada e/ou desagrupada por uma das outras colunas da
tupla, neste caso somente o Produto ou o Cliente; No primeiro momento,
quando se analisa somente os valores de vendas, é apresentado todo o
somatório da coluna Valor, sem nenhum filtro ou derivação. Para esta
derivação, quando a visão analítica precisa consultar os dados detalhados
por produtos, será apresentado quanto cada produto rentabilizou,
dividindo o somatório inicial em quanto cada produto individual
contribuiu para o todo. Se a visão analítica consulta os dados pela visão
de clientes, será apresentado o valor que cada cliente pagou, dividindo o
total em cada um dos clientes. Este é o processo de derivar e/ou
desagrupar os dados de uma Measure. As medidas normalmente são
baseadas nas informações contidas na tabela fato - sendo os
consolidadores (agregadores) baseados em um campo que recebe uma
operação de cálculo. Estas agregações padrões podem ser de SOMA,
MÉDIA, VALOR MAXIMO, VALOR MÍNIMO, CONTAGEM DE LINHAS,
PRIMEIRO VALOR, ULTIMO VALOR, entre outros. E é bom lembrar que as
medidas são importantes para o projeto de BI, mas não são calculadas no
momento da criação do Data Warehouse. São criadas na ferramenta de
análise, como o SQL Server Analysis Services.

Na tabela Fato o próprio nome já diz o que possui: fato! É nesta


tabela que se faz o cruzamento de todas as chaves das dimensões que

MVTech · 17
Do Banco de Dados Relacional à Tomada de Decisão

representam um Fato, único e verdadeiro, sobre a análise que precisa ser


feita. A tabela Fato é construída, na maioria das vezes, somente com os
campos-chave das tabelas Dimensão, para criar os relacionamentos, e com
os campos que consistirão nas Measures que serão calculadas. Não é
aconselhável adicionar colunas que não se enquadram nestas duas
características: Chaves Estrangeiras de tabelas Dimensões e Colunas que
serão Medidas. Colunas de texto como nome ou endereço não fazem
sentido para uma tabela Fato, mas podem ser extremamente importantes
para as dimensões. Para exemplificar, lembre de algum cenário com
ambiente relacional; cada tabela Dimensão há uma Chave Primária
(Primary Key – PK) e existem várias Dimensões no banco de dados. Na
tabela Fato as colunas são Chaves Estrangeiras (Foreign Key – FK)
referenciando as colunas chave das Dimensões, criando uma modelagem
“relacional”. A Fato consiste nos dados de relacionamento entre todas as
Dimensões, fazendo com que seu tamanho aumente se comparado ao
mesmo ambiente em uma modelagem relacional, com os dados
normalizados. Como visto anteriormente, a desnormalização de tabela
aumenta o tamanho armazenado em disco, mas por outro lado nos
permite uma resposta muito mais rápida e apropriada para os ambientes
de Data Warehouse.

Para melhor exemplificar a diferença entre a modelagem


Relacional e o Data Warehouse, acompanhe as figuras abaixo.

MVTech · 18
Do Banco de Dados Relacional à Tomada de Decisão

Ambiente relacional, com a tabela SalesPerson e todos seus


relacionamentos, do banco de dados AdventureWorks2012

Veja que na imagem acima, no ambiente relacional, as tabelas


estão normalizadas evitando redundância de dados e garantindo
integridade referencial por meio de chaves primárias (PK) e estrangeiras
(FK). Também é possível observar que a modelagem permite que tabelas
se relacionem com quantas tabelas forem necessárias por causa da
normalização.

MVTech · 19
Do Banco de Dados Relacional à Tomada de Decisão

Ambiente de Data Warehouse, com a tabela fato FactFinance e


seus relacionamentos com as dimensões, do banco de dados
AdventureWorks2012DW

MVTech · 20
Do Banco de Dados Relacional à Tomada de Decisão

Já nesta modelagem de Data Warehouse, existe uma tabela central


conhecida como Tabela Fato, que possui relacionamento com outras
tabelas conhecidas como Dimensões. É importante reparar que nesta
modelagem a tabela Fato possui relacionamento com todas as Dimensões,
mas nenhuma dimensão se comunica diretamente com outra, a não ser
por meio da tabela Fato. Os próximos tópicos explicam em detalhes as
Dimensões e suas as modelagens.

Olhando e comparando a modelagem Relacional e Data


Warehouse, pode-se observar que ambas estão no mesmo motor de
banco de dados, estruturalmente como um OLTP (Online Transaction
Processing). Se as duas modelagens estão nesta estrutura, por que
separar? É neste momento que a modelagem e o propósito faz toda a
diferença. As dimensões do DW são, por natureza, desnormalizadas e
largas. Toda hierarquia de relacionamentos e integridade de dados que se
apresenta no modelo relacional é repensado. Nas dimensões, os dados de
uma mesma categoria devem ser estruturados para representar a entidade
como um todo, por categoria entenda o grupo contextual no qual aquele
tipo de informação se encaixa por exemplo: Clientes; Produtos;
Pagamentos; etc.

Em uma modelagem relacional, atendendo à 3ª forma normal,


pode-se ter uma tabela para Logradouro (que possui um relacionamento
para Cidade e que por sua vez se relaciona com uma outra tabela para
localizar o Estado). Aprofundando um pouco mais, a tabela de Fornecedor
se relaciona à Logradouro, assim como a tabela Cliente. Quando se modela
uma Dimensão, é pensado no problema da área de negócios solicitante e
então os dados são remodelados para atender essa demanda. Olhando
este mesmo exemplo apresentado a pouco, somente duas tabelas
dimensões seriam modeladas, uma para Fornecedor e outra para Cliente

MVTech · 21
Do Banco de Dados Relacional à Tomada de Decisão

e estas tabelas teriam os campos Logradouro, Cidade e Estado, mesmo


que estes dados se repetissem várias vezes para um mesmo Fornecedor
ou Cliente. Este processo de desnormalização é enraizado nas tabelas
dimensões.

Modelagem normalizada entre as tabelas Cliente, Fornecedor,


Logradouro, Cidade e Estado. Ambiente de OLTP

MVTech · 22
Do Banco de Dados Relacional à Tomada de Decisão

Modelagem desnormalizada para criação das dimensões de


Fornecedor e Cliente. Ambiente de DW

As tabelas Dimensões fornecem os campos–chave, que serão


utilizados para popular a tabela Fato, e os campos que permitirão derivar
as medidas. Cada tupla da dimensão deve possuir uma chave única, mas
existem algumas situações onde a tabela original não possui esta chave
única. Para solucionar este problema, uma técnica chamada Chave
Substituta (Surrogate Key) deve ser usada, garantindo a maior
granularidade possível. Por padrão, como a tabela está desnormalizada, a
granularidade encontrada é entre média e baixa, dificultando a localização
de dados únicos.

Se a tabela Dimensão é desnormalizada, quer dizer que não se


pode criar uma modelagem para Data Warehouse utilizando tabelas
Dimensões normalizadas? Sim, apesar de não ser tão comum encontrar no
mercado, é possível trabalhar com dados normalizados no DW. Essa
técnica existe e é utilizada em alguns cenários. Conceitualmente é
chamada de Snowflake Schema e será apresentada com detalhes nos
próximos tópicos. Uma característica forte desta modelagem é construir
Dimensões que possuem Sub-Dimensões ou relacionamento com outras

MVTech · 23
Do Banco de Dados Relacional à Tomada de Decisão

Dimensões antes de se comunicar com a tabela Fato, se parecendo com


uma modelagem normalizada. Diferentemente desta modelagem
normalizada é a amplamente utilizada e estudada Star Schema, que é
composta por Dimensões específicas que agregam uma ou mais tabelas
para um segmento de dados (Clientes; Produtos; etc). Desnormalizando os
dados e contemplando mais colunas dentro da tabela Dimensão, criando
um único relacionamento entre a tabela Dimensão e a tabela Fato, sem
existir Sub-Dimensões ou relacionamento direto entre as Dimensões. É
importante ressaltar que, independente do modelo de criação do seu Data
Warehouse, seja Star ou Snowflake Schema, os resultados obtidos devem
obrigatoriamente ser os mesmos. O que diferencia estas modelagens são
os benefícios existentes na normalização/desnormalização, sendo que os
dados desnormalizados são mais simples para entendimento da área de
negócios solicitante - uma vez que não é necessário criar relacionamentos
entre outras dimensões para conseguir ter os retornos necessários.
Lembre do exemplo do logradouro de Cliente e Fornecedor, apresentado
alguns parágrafos acima. Outra grande diferença destas técnicas é que em
uma modelagem Star Schema não é possível criar um relacionamento 1-
para-muitos, já em um cenário normalizado (Snowflake Schema) é possível
conseguir este tipo de relacionamento.

MVTech · 24
Do Banco de Dados Relacional à Tomada de Decisão

Toda tabela Fato possui ao menos uma análise feita com base em
intervalos de tempo, seja data de cadastro de cliente, data de venda do
produto, data de pedido ao fornecedor, entre outros. Estas datas
armazenadas podem ocupar um espaço significativo dentro das
Dimensões e da Fato, visto que um campo do tipo Datetime, que armazena
os dados de data e hora com 3 casas de milissegundos, ocupa 8 bytes de
tamanho em cada registro. Fazendo um cálculo rápido, em 1 milhão de
registros com uma coluna do tipo Datetime, são mais de 7 MB
armazenados no banco de dados.

Para saber o tamanho de alguma expressão em bytes, utilize o


comando DATALENGTH, passando a expressão com parâmetro, como
exemplificado abaixo.

Tamanho do DataTime:

select DATALENGTH(getdate());

Uma técnica amplamente usada é criar uma tabela Dimensão que


armazena diversas colunas calculadas com base em uma coluna de Data,
com um intervalo que engloba desde os primórdios dos dados que serão
analisados até a data presente ou uma data futura, criando uma ocorrência
única para cada dia.

Colunas calculadas como: Dia da Semana, Semana do Mês,


Semana do Ano, Trimestre, Nome do Mês, Mês do Ano, se são informações
de calendário convencional (iniciando em 01/Janeiro e terminando em
31/Dezembro) ou se é calendário fiscal (geralmente utilizado por
empresas Americanas, começando no dia 01/Julho e terminando em

MVTech · 25
Do Banco de Dados Relacional à Tomada de Decisão

30/Junho) podem ser armazenadas evitando o cálculo na hora do


processamento ou consulta da informação.

Uma PK sequencial é criada nesta tabela e permite que a tabela


Dimensão de Tempo faça um relacionamento com a Fato. Ao invés de
armazenar um campo do tipo Datetime na tabela Fato, é armazenado um
campo do tipo inteiro que faz o relacionamento com a Dimensão, mesmo
conceito de PK e FK já explicado anteriormente. Uma vez que a tabela
Dimensão de Tempo foi criada especificamente para trabalhar com as
Datas, o processo de carga das outras Dimensões também pode ser
alterado para usufruir deste benefício, substituindo os campos de
Datetime por essa coluna-chave da Dimensão de Tempo, sem criar o
relacionamento físico entre as tabelas. O único relacionamento entre esta
dimensão e a Dimensão de Tempo continua sendo a tabela Fato.

Imagine que sua empresa iniciou as atividades em


01/Janeiro/2010. Não é necessário que você crie a Dimensão de Tempo
com dados anteriores à esta data. Isso armazenaria informação
desnecessária (e inútil, neste caso), deixando seu Data Warehouse com
mais informação do que precisa. Com essa informação, já sabemos qual é
a data mínima que será armazenada na Dimensão de Tempo e agora nos
resta definir qual é a data final que estará nesta tabela. Na teoria, nenhum
cadastro, venda ou qualquer outra interação com seus dados será
realizada em uma data futura. Isso nos dá a condição de inferir que a data
máxima desta Dimensão de Tempo será hoje. Limitando os dados a hoje,
obrigatoriamente toda vez que um novo dia surge, deve-se incluir os
dados deste dia nesta dimensão, então os cadastros ou vendas deste dia
terão um correspondente na Dimensão de Tempo.

MVTech · 26
Do Banco de Dados Relacional à Tomada de Decisão

Toda informação sumarizada na tabela Fato deve responder uma


necessidade de negócios. Da mesma forma que os dados estão
redundantes nas Dimensões, eles também o estarão na Fato. A tabela fica
grande por si só, então deve-se evitar o armazenamento de dados
desnecessários que só ocuparão espaço em disco e não ajudarão na
tomada de decisão. Os dados armazenados dentro da Fato são as
combinações das chaves estrangeiras da Dimensões e os valores a serem
calculados nas Measures. Por prática de mercado, a chave primária da Fato
é o conjunto de colunas dos relacionamentos das Dimensões com a Fato,
gerando uma Chave Composta por todas estas colunas, constituindo um
conjunto único de dados.

O próprio nome desta tabela já diz o que ela representa, um Fato.


Em miúdos, o que vem a ser um fato? Quando se junta os dados de todas
as dimensões com os valores das measures, pode-se dizer que tem um
fato. Por exemplo, um fato é a junção dos códigos de Cliente, Produto,
Fornecedor, Região, Loja, etc. A junção de cada um deste códigos pode
responder a questões como, por exemplo, se “o cliente Diego Nogare
comprou o produto Treinamento de BI do fornecedor NGR Solutions na
região Sudeste na loja OnLine”. Este cruzamento de dados é único,
consistindo num fato. Qualquer alteração neste conjunto de códigos, que
depois podem coletar os dados de detalhes nas dimensões, representa
uma informação única, real e verdadeira, sobre o que está se analisando
para a área de negócios. Volto à bater na tecla: o projeto de Business
Intelligence deve ser totalmente focado na área de negócios e deve
responder a questões que ajudarão as áreas a tomar melhores decisões.
Veja alguns exemplos de perguntas que as áreas de negócios pedem, e
vamos identificar como separar itens que são Dimensões e outros que
serão Measures, para por fim, criar a Fato contendo todos estes dados.

1. Total de Faturamento por equipe de Vendas

MVTech · 27
Do Banco de Dados Relacional à Tomada de Decisão

2. Lucro de uma linha de produto

3. Quantidade de Pedidos por Produto

4. Custo do Produto

5. Total de Faturamento por Cliente

6. Lucro por Região

7. Total de Faturamento por Cidade

Olhando estas perguntas, uma a uma, é possível identificar as


necessidades da área solicitante e, com isso, montar a estrutura que será
a base para o sistema de suporte à tomada de decisão. Na primeira
pergunta, Total de Faturamento é uma measure, e Equipe de Vendas é uma
Dimensão. Reparem que é possível dividir o Faturamento total de todas as
vendas por equipes de vendas, mas não o contrário. Na segunda pergunta,
a measure é o Lucro e a dimensão é a Linha de Produto. Na terceira,
Quantidade de Pedidos é a measure e Produto é a dimensão. Reparem que
esta dimensão é a mesma entidade da segunda pergunta, então neste
caso você deve garantir que ambas respostas sejam atendidas pela
estrutura da dimensão de produtos. Na questão do Custo do Produto é o
mesmo cenário, compartilhando da mesma entidade da dimensão, e uma
nova measure é acrescida. Já em Total de Faturamento por Cliente, a
measure de Total de Faturamento (anteriormente respondida por Equipe
de Vendas) já existe e agora precisa ser especializada por Cliente. Para isso,
basta adicionar a nova dimensão. Lucro por Região é o mesmo caso da
pergunta anterior, em que se compartilha a measure mas não a dimensão.
Já no caso da última pergunta (Total de Faturamento por Cidade), ambas
respostas já estão na modelagem de acordo com as perguntas anteriores,
basta garantir que a entidade Região contenha a informação de Cidade
que a área de negócios precisa.

MVTech · 28
Do Banco de Dados Relacional à Tomada de Decisão

O resultado seria assim:

Dimensões: Equipe | Produto | Cliente e Região

Measures: Total de Faturamento | Lucro | Quantidade de Vendas


e Custo

MVTech · 29
Do Banco de Dados Relacional à Tomada de Decisão

Measures são os valores calculados e armazenados dentro da Fato,


que serão desagrupados de acordo com as Dimensões, para especializar
uma informação. Existem diversos cálculos-padrão que são passíveis de
serem utilizados nas measures. Os mais comuns, como já citados, são
SOMA, MÉDIA, VALOR MAXIMO, VALOR MÍNIMO, CONTAGEM DE
LINHAS, PRIMEIRO VALOR, ULTIMO VALOR. Isso não quer dizer que não
se pode calcular nenhuma measure específica para sua tomada de decisão.
Os cálculos específicos como Lucro, por exemplo, podem ser calculado
com base em uma fórmula que soma os custos de produção do item, mais
os impostos, e subtrai do valor de venda, gerando o resultado esperado.
Vale lembrar, mais uma vez, que este processo é realizado dentro do SQL
Server Analysis Services e não dentro do Data Warehouse. Neste momento,
o importante na modelagem é garantir que os dados necessários para
realizar os cálculos das medidas, seja padrão ou específico, estejam
contemplados nas colunas existentes na tabela Fato e que tenham as
correspondências nas Dimensões.

As measures podem ser divididas em grupos, de acordo com o


grau de abrangência que podem ter nas especializações das informações.
Estes grupos são chamados de Additive, Semi-Additive e Non-Additive.

O grupo Additive consiste em uma Measure que pode ser


segmentada por todas as dimensões existentes no projeto. Isso significa
que todas as dimensões podem derivar o valor da Measure, deixando o
resultado bem especializado e melhorando ao máximo a tomada de
decisão. Um exemplo é o Total de Vendas, que pode ser dividido pelas
dimensões Cliente, Fornecedor, Produto, Loja, Região, etc.

Já o grupo Semi-Additive permite a derivação do dado por


algumas dimensões, mas não por todas. Se uma dimensão não tem

MVTech · 30
Do Banco de Dados Relacional à Tomada de Decisão

“habilidade” para derivar aquele dado, este já caracteriza uma measure


Semi-Additive. Para exemplificar, imagine uma measure que representa o
Valor em Estoque. Esta informação pode ser dividida por Produto, Loja,
Fornecedor, Região, mas não pode ser especializada por Cliente. Não é
possível saber qual cliente irá comprar algum produto, para saber o
quanto tem em estoque daquele item.

Por fim o grupo Non-Additive é praticamente um tipo de measure


que não pode ser especializado por nenhuma dimensão. Este grupo
peculiar, com base nas definições da literatura, nem deve ser considerado
uma measure, visto que não se pode derivar ou especializar uma dimensão
com base nos seus valores.

MVTech · 31
Do Banco de Dados Relacional à Tomada de Decisão

Quem nunca viu nada de BI com o SQL Server pode se sentir um


pouco perdido com os exemplos práticos de mais à frente, mas esta parte
introdutória ajudará a dar uma visão interessante e mostrará todo o
caminho para entender como implantar BI com essa poderosa ferramenta
da Microsoft.

Para nivelamento do conhecimento, é importante saber separar os


“produtos” dentro do SQL Server. Estes produtos são tecnologias dentro
da plataforma de Business Intelligence que fazem trabalhos diferentes
umas das outras, mas estão todas interligadas. Então vamos lá:

Database Engine: o mecanismo dentro do SQL Server responsável


pelo armazenamento relacional dos dados, sendo o motor OLTP (On-Line
Transaction Processing). Nesta parte do produto é que se criam as tabelas,
índices, procedures, functions, enfim, todos os dados transacionais e do
Data Warehouse, seja normalizado ou desnormalizado. É o que todos
chamam de banco de dados.

Analysis Services (SSAS – SQL Server Analysis Services): a


tecnologia dentro do SQL Server que permite criar os cubos, dimensões e
tabelas fatos dos dados a serem analisados. Aqui ficam os dados
redundantes, com um monte de cruzamento já calculado para você não
precisar fazer JOINS em tempo de execução e, com isso, devolver os dados
rapidamente para quem utiliza a plataforma de BI. A grosso modo, quando
fala-se em BI, geralmente está se referindo diretamente a esta ferramenta.

Integration Services (SSIS – SQL Server Integration Services): Esse


componente nos permite conectar um lugar qualquer de origem e extrair
seus dados, podendo trabalhar em cima deles para “arrumar” alguma
estrutura que não esteja de acordo com o que precisamos e depois
podemos carregar (salvar) essas informações em algum outro destino.
Geralmente é usado para ler informações de origens como arquivos TXT,

MVTech · 32
Do Banco de Dados Relacional à Tomada de Decisão

XML ou outros bancos de dados e armazenar estas informações no SQL


Server que servirá como base para o Data Warehouse. Em um segundo
momento, servirá também para rodar o cubo e ter todas as informações
centralizadas no BI.

Por último temos o Reporting Services (SSRS – SQL Server


Reporting Services): o serviço de gerenciamento de relatórios do SQL
Server que permite criar e apresentar para os usuários relatórios ricos e
completos de informações reais que estão armazenadas no SQL Server ou
Analysis Services. A criação de relatórios com o Reporting Services é bem
tranquila, garantindo uma produtividade muito grande para quem utiliza
esse gerenciador.

Agora vamos relembrar algumas terminologias e formas de


trabalho.

Modelagem Multidimensional: Quando estudamos SQL Server,


aprendemos a criar tabelas com alguns níveis de normalização com o
intuito de deixar nosso banco de dados sem informações
redundantes desnecessária e com menor quantidade de armazenamento
possível, diminuindo quantidade de espaço em disco utilizado. Já com BI
temos que pensar exatamente no contrário, em dados desnormalizados.
Isso porque temos que colocar os dados em tabelas Fatos e em
Dimensões!

Tabelas Fato: São os dados que extraímos do banco de dados e


agrupamos por assuntos específicos das Dimensões e Measures. Para
ilustrar vamos imaginar um processo de venda de produto. Vamos usar
Livros, mas poderia ser qualquer outra estrutura.

MVTech · 33
Do Banco de Dados Relacional à Tomada de Decisão

Modelagem Normalizada

Essa representação mostra um diagrama de dados relacionais com


as tabelas normalizadas e evitando redundância de dados. Quando vamos
atuar com BI e precisamos criar as Tabelas Fato, separamos esses dados
pertinentes à informações agrupadas por entidades, como Vendas e
Clientes. Pode haver outras tabelas Fato em um mesmo cubo, vai
depender do que você precisar.

MVTech · 34
Do Banco de Dados Relacional à Tomada de Decisão

Ítens passíveis de cálculo da Tabela Fato

Na tabela Fato_Venda, deve-se consultar todas as Dimensões cujas


informações precisam ser coletadas e escrever nessa Fato. Os dados que
alimentam a Dimensão e depois, por sua vez, a Fato podem estar em outro
banco e até outro servidor. Não importa, porque o importante são os
dados que estarão agrupados pela entidade Vendas, neste exemplo acima.
Estas informações serão processadas e armazenadas na nova estrutura de
Data Warehouse. Veja que algumas informações vêm de origens diferentes
e outras são simplesmente calculadas para atender a necessidade da
aplicação da área de negócios.

Tabelas Dimensões: São tabelas com informações mais


detalhadas que complementam as tabelas Fatos e geram uma (ou várias)
tabelas para armazenar esses novos dados redundantes. As dimensões nos
possibilitam trabalhar com dados estatísticos de uma determinada
informação que precisamos analisar. Estes dados serão calculados na Fato

MVTech · 35
Do Banco de Dados Relacional à Tomada de Decisão

como sendo Measures. Seguindo o exemplo anterior (Vendas de Livros)


conseguimos atrelar dimensão (ou dimensões) a uma tabela fato de Livros
para saber onde um determinado livro é mais vendido ou qual é o gênero
que mais agrada a uma certa faixa etária. Veja a imagem abaixo para
exemplificar esse cenário:

Cubo: É um repositório onde todas as informações poderão ser


acessadas de forma centralizada e direta. Nos cubos, o cliente já terá todas
os dados consolidados e preparados para lhe entregar a informação quase
que imediatamente. Entendendo o fato de que os usuários de um sistema
de BI são os gerentes e diretores de empresas, a informação para uma
tomada de decisão deve ser apresentada bem rápida, auxiliando os
usuários a fazerem o trabalho deles rapidamente!

É uma explicação elucidativa somente para facilitar o


entendimento, já que dentro do Analysis Services os dados não ficam
armazenados desta forma. Para facilitar o entendimento, imaginem um
projeto de BI para cruzar informações sobre vendas de roupas com cubo
de apenas 3 dimensões, sendo uma relacionada à produtos, outra a cores
e outra a tamanhos.

Com as três dimensões se cruzando, é possível saber quanto cada


peça de roupa vende, em qual cor e qual tamanho. Levando em
consideração cada dimensão, pense hipoteticamente na dimensão de

MVTech · 36
Do Banco de Dados Relacional à Tomada de Decisão

Tamanho como sendo as informações armazenadas em Colunas. A


dimensão de Cor como sendo as armazenadas em Linhas e a dimensão de
Tamanho armazenadas nas profundidades. Cada uma destas células
representa um valor que irá compor a Measure para o cálculo a ser feito.
Neste caso, Quantidade de Vendas.

Armazenamento dos dados na dimensão de Tamanho

MVTech · 37
Do Banco de Dados Relacional à Tomada de Decisão

Armazenamento dos dados na dimensão de Cor

Armazenamento dos dados na dimensão de Produto

O cruzamento desta matriz representa a informação mais


especializada possível, visto que é a junção de todas as dimensões
existentes.

MVTech · 38
Do Banco de Dados Relacional à Tomada de Decisão

Matriz do cruzamento de todas as dimensões

Agora, veja esta representação com a Quantidade de Vendas, em


cada uma das células preenchidas. O somatório de todas as células dá o
retorno total de vendas, representando a informação mais ampla e menos
específica possível.

MVTech · 39
Do Banco de Dados Relacional à Tomada de Decisão

Cubo com a matriz das measures preenchidas

Seguindo a mesma lógica, se for preciso retornar valor de um


membro qualquer, sem cruzamento com outras dimensões, a
representação faz uma agregação para aquele membro, neste exemplo
somando todas as células envolvidas.

MVTech · 40
Do Banco de Dados Relacional à Tomada de Decisão

Agregação de soma do membro “Tamanho G” – Total 49

Agregação de soma do membro “Cor Azul” – Total 55

MVTech · 41
Do Banco de Dados Relacional à Tomada de Decisão

Agregação de soma do membro “Produto Bermuda” – Total 37

Um aplicativo muito utilizado para ler os dados destes cubos OLAP


(On-line Analytical Processing) é o Microsoft Office Excel utilizando o
recurso de PivotTable e agora também podendo utilizar o PowerPivot.
Basicamente os dois recursos no Excel fazem essa interface entre o cubo
OLAP, mas o PowerPivot com o Excel 2013 tornou muito rápido criar
relatórios e entregar a informação aos gerentes e diretores.

MVTech · 42
Do Banco de Dados Relacional à Tomada de Decisão

SQL SERVER
INTEGRATION
SERVICES

MVTech · 43
Do Banco de Dados Relacional à Tomada de Decisão

Que tal começar a fazer uma movimentação de dados com a


ferramenta de Import and Export Data, para começar a se familiarizar com
as possibilidades existentes para seus projetos de Business Intelligence?
Esta ferramenta é uma versão inicial e com menos recursos que o SQL
Server Integration Services.

Vou mostrar uma das formas de utilizar o SSIS (SQL Server


Integration Services) para importar dados para o SQL Server 2014. A ideia
é popular uma tabela já existente com base em um arquivo de texto
simples. Utilizarei o Import and Export Data que é uma ferramenta que já
acompanha o SQL Server e não nos obriga a criar um projeto no SSDT (SQL
Server Data Tools) que é o Visual Studio com os template para se trabalhar
com BI. O Import and Export Data é muito mais limitado que o SSDT, mas
para esse propósito é suficiente.

Para gerar a massa de dados que vou utilizar para explicar, acessei
o site da Wikipedia e coletei os nomes e períodos de mandato de todos
os Presidentes da República do Brasil
(https://pt.wikipedia.org/wiki/Anexo:Lista_de_presidentes_do_Brasil).

Para armazenar estes dados será necessário uma tabela de nomes


e, nesta tabela, serão carregados nomes e datas.

Estes nomes foram salvos em um arquivo TXT, cujo nome é


Presidentes.txt e que você encontra no arquivo .Zip com os fontes do livro.

MVTech · 44
Do Banco de Dados Relacional à Tomada de Decisão

Para exemplificar o processo de importar esses dados para o SQL


Server, deve-se criar uma tabela para armazenar os registros.

CREATE DATABASE dbNomes

GO

USE dbNomes

GO

CREATE TABLE tbPresidentes (id SMALLINT IDENTITY(1,1)

, nome VARCHAR(30) not null

, inicio DATE

, termino DATE)

GO

Depois de criada a tabela, é hora de abrir o aplicativo SQL Server


2014 Import and Export Data (64-bit), que fica dentro da pasta do
Microsoft SQL Server 2014. Veja no caminho abaixo:

MVTech · 45
Do Banco de Dados Relacional à Tomada de Decisão

A primeira tela que se abre é uma tela de boas-vindas. Ela não


realiza nenhuma atividade especial no processo. É só avançar sem nenhum
problema.

MVTech · 46
Do Banco de Dados Relacional à Tomada de Decisão

A segunda tela é importante. É aqui que selecionamos a origem


dos nossos dados. Como vamos importar informações de um arquivo TXT,
no primeiro combo (no topo da tela) a origem selecionada deve ser Flat
File Source. Neste combo existem outras diversas origem de dados, mas
neste caso específico será o Flat File. Após escolher essa opção, os campos
da tela se adaptam a ela e solicitam informações sobre o arquivo. O botão
Browse nos permite escolher o arquivo utilizado para importar os dados.
Selecionamos o arquivo Presidentes.txt e algumas informações relativas a
ele são preenchidas. No menu lateral à esquerda existem quatro opções.
Se quiser visualizar os dados que existem no arquivo, vá até a opção

MVTech · 47
Do Banco de Dados Relacional à Tomada de Decisão

“Preview”. Reparem que o nome da coluna ficou com o nome do primeiro


Presidente da República e isso precisa ser corrigido. Volte à opção General
no menu da esquerda e procure uma caixa de seleção escrito Column
names in the first data row e desmarque esta caixa. Volte à opção preview
e então o nome de Deodoro da Fonseca não está mais na coluna, mas
agora a coluna está com a nomenclatura padrão, com os nomes de
Column 0, Column 1, e assim por diante. Para alterar esta nomenclatura,
vá até a opção “Advanced”, selecione a Column 0 e altere a propriedade
Name de Column 0 para Codigo. Aproveite e altere a propriedade
DataType de string (DT_STR) para four-byte signed integer (DT_I4).

Para aplicar outras conversões entre os DataTypes do SQL Server


para o Integration Services, pode conferir nesta tabela a lista de
correspondências.

http://technet.microsoft.com/pt-br/library/ms141036.aspx

MVTech · 48
Do Banco de Dados Relacional à Tomada de Decisão

Aproveite e altere também as outras colunas, mudando a


propriedade Name e DataType, deixando desta forma:

Column 1  Name: Nome | DataType: string (DT_STR)

Column 2  Name: Inicio | DataType: database date (DT_DATE)

Column 3  Name: Termino | DataType: database date (DT_DATE)

MVTech · 49
Do Banco de Dados Relacional à Tomada de Decisão

Depois de alterar estas propriedades, vá até a opção Preview e veja


as colunas renomeadas.

Avance para o próximo passo, clicando em Next.

A terceira tela utilizada é a tela referente ao destino dos dados.


Neste caso, como vamos colocar os dados do arquivo no SQL Server 2014,
deve-se selecionar o destino como SQL Server Native Client 11.0, informar
a instância e realizar a autenticação no servidor. Após a autenticação deve-
se escolher o Database que vai armazenar os dados, neste caso, dbNomes.
Após preencher esses campos, deve avançar para a próxima tela clicando
em Next.

MVTech · 50
Do Banco de Dados Relacional à Tomada de Decisão

A tela seguinte permite escolher em qual tabela do banco de


dados os dados do arquivo serão armazenados. Por padrão, ele sugere
criar uma tabela nova com o nome do arquivo, mas isso não é obrigatório.
Veja que neste caso vamos preencher a tabela que criamos lá em cima, a
tbPresidentes. Para informar a essa ferramenta qual coluna do arquivo irá
popular qual coluna da tabela, deve-se clicar no botão Edit Mappings na
parte inferior da tela.

MVTech · 51
Do Banco de Dados Relacional à Tomada de Decisão

Na edição de colunas, reparem que as colunas Source


e Destination foram ligadas automaticamente. Isso acontece por causa dos
nomes serem os mesmos na origem e no destino.

Porém, o campo Codigo da tabela foi definido com a propriedade


IDENTITY, que faz um auto-incremento numérico, logo não poderá ser
preenchido pelos dados da origem. Neste caso, será necessário alterar a
informação no Destination da coluna Codigo para <ignore>. Assim, os
dados não serão lidos da origem para escrever no destino.

MVTech · 52
Do Banco de Dados Relacional à Tomada de Decisão

Clica-se em OK na tela de edição de mapeamento das colunas, e


Next na tela onde liga-se a origem ao destino.

Após a escolha da tabela de destino e a coluna que receberá os


dados do arquivo, a ferramenta analisa as ligações informadas. Se
estiverem todas com a validação verde, avançamos para a tela seguinte,
clicando em Next.

MVTech · 53
Do Banco de Dados Relacional à Tomada de Decisão

Neste passo, a ferramenta pergunta se quer executar o processo


imediatamente ou se quer armazenar para realizações futuras. No nosso
caso, vamos apenas popular esta tabela agora, então não teremos
problema em mandar executar agora e não salvar essa configuração. Para
isso, marque a opção Run immediately e desmarque a opção Save SSIS
Package. Novamente, avance clicando em Next.

MVTech · 54
Do Banco de Dados Relacional à Tomada de Decisão

Este é o penúltimo passo. Ele mostra um resumo do que será


realizado e solicita que clique em Finish para efetivamente realizar o
processo.

MVTech · 55
Do Banco de Dados Relacional à Tomada de Decisão

Ao clicar em finalizar, o processo começa a ser executado. Se


estiver tudo configurado certo, não haverá problema e uma tela parecida
com essa abaixo será apresentada. Veja que todos os passos foram
executados com sucesso.

MVTech · 56
Do Banco de Dados Relacional à Tomada de Decisão

Agora, para provar a movimentação dos dados da origem para o


destino, pode-se fazer um SELECT simples e verificar se todos os 36
registros foram incluídos.

Este é o código para a validação:

SELECT id, nome, inicio, termino from tbPresidentes

MVTech · 57
Do Banco de Dados Relacional à Tomada de Decisão

Parabéns, com este exemplo você realizou sua primeira


movimentação de dados com o SQL Server 2014!

Nos próximos passos você irá aprender outras atividades


interessantes para realizar nos seus projetos de Business Intelligence.

MVTech · 58
Do Banco de Dados Relacional à Tomada de Decisão

Que tal agora fazer o mesmo trabalho de importação dos dados,


mas utilizando o SQL Server Integration Services ao invés do SQL Server
2014 Import and Export Data?

Desta vez, o aplicativo utilizado será o SSDT (SQL Server Data


Tools), que nada mais é que o Shell do Visual Studio 2012 com os
templates de projetos para se trabalhar com BI. Na versão 2014 do SQL
Server, é necessário baixar e instalar o Visual Studio separadamente. Para
fazer o download, acesse o link http://www.microsoft.com/en-
us/download/details.aspx?id=36843.

Após o download e a instalação, é hora de abrir o Visual Studio


2012, que está na a pasta Microsoft Visual Studio 2012. Veja no caminho
abaixo:

Após o SSDT carregar, acesse o menu File > New > Project, para
criar um projeto novo. A tela com os templates e tipos de projetos é
apresentada. As possibilidades de se trabalhar com Business Intelligence
cobre os três tipos de projetos, Analysis Services, Integration Services e
Reporting Services. Selecione o Integration Services Project, informe um
nome e o local onde irá salvar.

MVTech · 59
Do Banco de Dados Relacional à Tomada de Decisão

Após preencher os dados, clique em OK e aguarde alguns


instantes.

MVTech · 60
Do Banco de Dados Relacional à Tomada de Decisão

Ao iniciar o projeto, cinco abas superiores são apresentadas na


área de desenvolvimento do processo: Control Flow, Data
Flow, Parameters, Event Handlers e Package Explorer. Não vou falar sobre
as abas que não utilizaremos neste exemplo, vou falar apenas da Control
Flow e Data Flow. A aba Control Flow é responsável por criar as execuções
do pacote que não são necessariamente relacionadas à ETL (Extração,
Transformação e Carga). É dentro desta área que são colocadas as tarefas
administrativas, como por exemplo, a Data Flow Task, que é uma tarefa
especial e possui sua própria aba superior. O Control Flow pode possuir
uma ou mais destas tarefas (Data Flows Task), que são os responsáveis
reais por realizar o ETL ou outras tarefas, como acessar uma pasta FTP,
criar um loop, enviar um e-mail, entre outros.

Já na tarefa Data Flow informamos qual é a origem e o destino dos


dados que serão processados. Veja as abas superiores e o item do Data
Flow na Toolbox (à esquerda). Ele será arrastado para dentro do Control
Flow e irá controlar o processo.

Após arrastar o item Data Flow Task para a área do Control Flow,
dê dois cliques nesta tarefa e vamos analisar as mudanças da toolbox desta
nova aba. Repare que os itens do toolbox foram modificados para se
adequar à aba Data Flow. As sessões da toolbox são Favorites (suas tarefas

MVTech · 61
Do Banco de Dados Relacional à Tomada de Decisão

favoritas), Common (tarefas comuns usadas nos projetos), Other


Transforms (são as outras tarefas de transformações, que não estão na
sessão Common), Other Sources (são as outras tarefas de origens que não
estão na sessão Favorites) e Other Destinations (são as outras tarefas de
destino que não estão na sessão Favorites). Os dois grupos que
obrigatoriamente sempre serão usados em um projeto de ETL com SSIS
serão os de Origem (Sources) e de Destino (Destinations). O grupo de
transformação (Data Flow Transformations) pode ser usado ou não, vai
depender da sua necessidade.

Bom, sabendo que os itens mínimos para se criar um fluxo


no SSIS são Origem e Destino, vamos adicionar esses itens e fazer as
conexões. A origem será um arquivo TXT. Para isso, vou adicionar o Flat
File Source. Encontre esse objeto na toolbox à esquerda e arraste para a
área de design.

MVTech · 62
Do Banco de Dados Relacional à Tomada de Decisão

Depois, como o destino será um banco de dados SQL Server, deve-


se adicionar um ADO NET Destination por meio do mesmo processo.
Encontre o objeto na toolbox e arraste para a área de design. Repare que
os itens estão um na sessão de Origem e outro no Destino, apesar dos
nomes serem parecidos.

É importante renomear as tarefas, para que seja possível consultar


as bases de gerenciamento e saber o que aconteceu e quando estes

MVTech · 63
Do Banco de Dados Relacional à Tomada de Decisão

processos interagiram com as execuções. Vou renomear a origem para


“Arquivo com Presidentes” e o destino para “Tabela com Presidentes”

Para se criar o fluxo do processo, visto que podem existir diversas


atividades de origens, transformações e destinos apresentados em um
mesmo fluxo, é necessário criar uma ordem lógica dos acontecimentos.
Para isso, deve-se selecionar o item que será processado primeiro e
arrastar a setinha azul para o item seguinte, continuando até completar
todo o processo lógico do pacote. Para este exemplo, selecionamos o item
“Arquivo com Presidentes”, arrastamos sua setinha azul e ligamos no
“Tabela com Presidentes”. Reparem que existem duas setas na origem.
Estas setas são chamadas constraints, a seta azul representa que o fluxo
deve seguir este caminho quando não ocorrer problema no
processamento. Já a seta vermelha é utilizada como caminho quando o
processamento daquela tarefa der algum problema. Geralmente a seta
vermelha segue para um item que permite enviar um e-mail ou salvar a
mensagem do erro em um arquivo de log para análise posterior. Neste
exemplo, vou apenas mostrar a constraint de sucesso, a azul.

MVTech · 64
Do Banco de Dados Relacional à Tomada de Decisão

Agora que já foram criados os fluxos do trabalho, vamos criar as


conexões que servirão para orientar a origem e o destino dos dados. Para
isso, clique com o botão direito na Origem e depois selecione Edit.

MVTech · 65
Do Banco de Dados Relacional à Tomada de Decisão

Uma tela com as opções para se carregar um arquivo é


apresentada. Esta tela é semelhante à tela criada no exemplo utilizando o
SQL Server 2014 Import and Export Data. Como não é exatamente a
mesma tela, é preciso criar uma conexão para o arquivo Presidentes.txt.

Para isso, clique no botão New e configure as opções do arquivo


que será lido, seguindo os mesmos passos que foram realizados no
exemplo anterior.

Após fazer a configuração dos dados de origem, repare que o


objeto não está mais marcado com um alerta x. Isso representa que ele
está configurado com uma fonte de dados. Comparando com o destino,
que ainda não foi configurado, fica fácil observar o x. Agora é a hora de
configurar o destino dos dados, vamos então fazer o mesmo processo com
o destino, clique com o botão direito e selecione Edit.

Uma tela para selecionar a conexão de destino é apresentada.

MVTech · 66
Do Banco de Dados Relacional à Tomada de Decisão

Deve-se clicar em New para criar o item do Connection Manager e


ir para uma segunda tela. Nesta segunda tela, uma lista com as conexões
existentes é apresentada. Novamente clique em New e agora sim
configure a conexão. Neste caso, como foi feito na origem, deve-se
configurar o destino de acordo com a configuração realizada no exemplo
anterior.

MVTech · 67
Do Banco de Dados Relacional à Tomada de Decisão

Após configurar, volte até a primeira tela da configuração e


informe qual será a tabela que vai escrever a informação.

Após selecionar a tabela tbPresidentes na combo de Use a Table


or View, clique no item de menu Mappings à esquerda e repare que os
itens já estão mapeados entre a origem e o destino.

Essa configuração irá representar qual informação se liga na outra.


Após ligar as colunas, é só clicar em OK.

MVTech · 68
Do Banco de Dados Relacional à Tomada de Decisão

A tabela com os dados dos nomes dos Presidentes está


preenchida. Para fins de exemplo, vamos apagar todos os dados que
existem lá dentro e, em seguida, popular a tabela com base neste pacote
que foi criado. Para apagar todos os dados, execute o código abaixo no
SQL Server Management Studio:

truncate table tbPresidentes

O processo da movimentação dos dados está quase concluído, só


precisa executar o pacote (apertando F5) e aguardar o final do
processamento. Se tudo estiver configurado corretamente, seguindo os
exemplos acima, as caixinhas ficarão com alertas verdes. Isso significa que
foram executadas com sucesso. Caso alguma fique vermelha, significa que
nesta tarefa ocorreu uma falha.

MVTech · 69
Do Banco de Dados Relacional à Tomada de Decisão

Para confirmar a inclusão de todos os dados do arquivo TXT para


o SQL Server, consulta-se os dados como feito anteriormente.

Este é o código para a validação:

SELECT id, nome, inicio, termino from tbPresidentes

Com esse processo do SQL Server Integration Services funcionando,


foi possível migrar dados de um arquivo TXT para o SQL Server. O arquivo

MVTech · 70
Do Banco de Dados Relacional à Tomada de Decisão

TXT foi só uma das possíveis origem de dados, podendo ser qualquer
outra que estivesse dentro do grupo Data Flow Sources na toolbox da
aba Data Flow.

MVTech · 71
Do Banco de Dados Relacional à Tomada de Decisão

No SQL Server Integration Services, existem dois tipos de escopo


para abranger o impacto das conexões. Estes dois escopos são nos níveis
de Pacotes e de Projetos.

Quando se inicia um novo projeto no SQL Server Integration


Services, algumas pastas na Solution Explorer são apresentadas. A que diz
respeito à conexões é a pasta Connection Managers.

Esta pasta é responsável por garantir as conexões com escopos de


Projetos, sendo possível compartilhar esta conexão entre todos os pacotes
existentes no seu projeto.

Para criar a conexão com este escopo, clique com o botão direito
na pasta Connection Managers e vá para New Connection Manager.

MVTech · 72
Do Banco de Dados Relacional à Tomada de Decisão

Neste momento todos os provedores de conexões instalados na


máquina de desenvolvimento são apresentados, permitindo que você
escolha em qual irá se conectar.

MVTech · 73
Do Banco de Dados Relacional à Tomada de Decisão

No caso de selecionar o tipo ADO.NET, você terá acesso a


conexões nativas ao SQL Server 2014. As outras conexões permitem
acessos a outros servidores ou arquivos, como XML, Flat File, OLEDB,
ODBC, entre outros. Após selecionar o ADO.NET e clicar em Add, você será
redirecionado àquela tela já conhecida das configurações de autenticação
do servidor. Caso não lembre, veja o capítulo sobre SQL Server 2014
Import and Export Data.

MVTech · 74
Do Banco de Dados Relacional à Tomada de Decisão

Após preencher os dados da conexão, confirme a tela no botão OK


até voltar à tela principal do ambiente. Isso lhe permitirá enxergar a
conexão que acabou de criar na Solution Explorer, pasta Connection
Managers.

MVTech · 75
Do Banco de Dados Relacional à Tomada de Decisão

O próximo passo é abrir o pacote chamado Package.dtsx que já


vem criado na pasta SSIS Packages, para então criar os próximos tipos de
conexões, com escopo exclusivo para o pacote.

Repare que ao abrir o pacote, também existe uma área no final da


página chamada Connection Managers e já existe uma conexão criada
nesta área. Esta conexão é exatamente a mesma conexão com escopo de
projeto, criada instantes atrás. Um detalhe importante: a conexão com
escopo de projeto fica com o nome (project) e também um ícone diferente
para se diferenciar das outras conexões locais. Todas as conexões de
projeto são replicadas para os pacotes. Por este motivo sempre que for
necessário se conectar a uma mesma origem de dados de diversos
pacotes, é recomendado criar esta conexão no escopo do projeto. A
manutenção também é beneficiada, visto que uma alteração na
configuração do Connection Managers do projeto irá refletir em todos os
pacotes que estão utilizando aquela conexão.

MVTech · 76
Do Banco de Dados Relacional à Tomada de Decisão

Para criar a conexão com escopo do pacote, deve-se clicar com o


botão direito na área de Connection Manager do pacote e apontar para o
provedor que deseja criar a conexão.

Da mesma forma utilizada nos exemplos anteriores, foram criadas


duas conexões, uma para o SQL Server 2014 que serviu de destino dos
dados, e outra para um Flat File que foi caracterizada como a origem dos
dados. Para completar o exemplo, deve-se criar uma conexão para o Flat
File e apontar para aquele arquivo Presidentes.txt.

O controle DataFlow possui uma área de Connection Manager na


região inferior da área de design. Nesta área ficam todas as conexões
locais do pacote. Vamos adicionar uma nova conexão clicando com o
botão direito e indo até o item específico da conexão que deseja realizar.

MVTech · 77
Do Banco de Dados Relacional à Tomada de Decisão

A tela que irá guiar a configuração do arquivo já é conhecida. É a


mesma utilizada nos exemplos de Flat File anteriores. Preencha a tela com
todas as configurações necessárias e veja que foi criada uma nova entrada
nesta área, agora para o Flat File Connection Manager.

É possível renomear as conexões para refletir melhor a realidade


do que se está trabalhando. Renomeie a conexão do escopo de projeto
para “Destino” e a conexão do pacote para “Origem”. Sua tela irá deverá
ser parecida com essa:

MVTech · 78
Do Banco de Dados Relacional à Tomada de Decisão

É possível migrar uma conexão de escopo de pacote para escopo


de projeto, mas o caminho inverso não é permitido. Para realizar esta
migração, selecione a conexão no Connection Managers do pacote, clique
com o botão direito, e então aponte para Convert to Project Connection.

MVTech · 79
Do Banco de Dados Relacional à Tomada de Decisão

Ao realizar esta tarefa, a conexão apontada para o escopo de


projeto passará a existir em todos os pacotes do projeto, sendo
compartilhada entre eles.

MVTech · 80
Do Banco de Dados Relacional à Tomada de Decisão

Para utilizar uma conexão existente em alguma tarefa


(independente do escopo), basta informar à tarefa qual é a conexão. Para
exemplificar, adicione uma tarefa de Execute SQL Task no Control Flow do
pacote.

Clique com o botão direito na tarefa adicionada ao pacote e


aponte para Edit. Nesta tela que se abrirá, é preciso configurar a conexão
e a instrução SQL a ser executada. Esta tarefa permite executar instruções

MVTech · 81
Do Banco de Dados Relacional à Tomada de Decisão

SQL, indepentende de ser contra um SQL Server, um MySQL ou um Oracle.


Se o SGBD (Sistema Gerenciador de Banco de Dados) permite a conexão,
esta tarefa poderá se conectar a ele.

Altere a propriedade ConnectionType de OLE DB para ADO.NET,


isso fará com que o ambiente receba instruções para disparar contra
servidores que tenham autenticações nativas com ADO.NET, que é o caso
do SQL Server 2014. Com a alteração desta propriedade, é possível clicar
na caixa de seleção de Connection e visualizar a conexão com o nome de
Destino. Selecione este item.

MVTech · 82
Do Banco de Dados Relacional à Tomada de Decisão

Logo abaixo, na propriedade SQLStatement, é o local onde deve


entrar a instrução SQL que será executada no servidor que foi configurado.
Para o exemplo, coloque o código abaixo, que será responsável por apagar
todos os registros da tabela tbPresidentes.

truncate table tbPresidentes

Confirme as modificações até voltar à tela inicial e veja que o X


vermelho já não existe mais na tarefa de Execute SQL Task. Como

MVTech · 83
Do Banco de Dados Relacional à Tomada de Decisão

informado anteriormente, é importante renomear as tarefas e objetos. Esta


tarefa será renomeada como Limpar Tabela tbPresidentes.

Se tudo ocorreu com sucesso, os dados da tabela tbPresidentes


não existirão mais ao executar o pacote.

Agora, para preencher novamente a tabela com os dados dos


Presidentes da República, execute o primeiro exemplo utilizando o SQL
Server 2014 Import and Export Data ou o segundo exemplo, com o SQL
Server Integration Services.

MVTech · 84
Do Banco de Dados Relacional à Tomada de Decisão

O processamento do cubo é um processo contínuo, que deve ser


executado de tempos em tempos de acordo com a atualização do Data
Warehouse. Digamos que seus dados são migrados da origem (ambiente
de produção) para o Stage (ambiente temporário) uma vez ao dia, após a
meia noite, recuperando os dados do dia anterior. Supondo que esta
movimentação de dados precise de 30 minutos, então seu cubo deverá
iniciar o processamento dos dados após a meia noite e meia. Existe um
capítulo mais à frente, na sessão de SQL Server Analysis Services, que
explica sobre o processamento do cubo.

Este capítulo é para ensinar como criar um pacote de


processamento do cubo dentro do SSIS. Para isso, porém, seu cubo já deve
estar criado e publicado. A tarefa existente no Integration Services é
encarregada de processar o cubo e não de alterar ou publicar. Esta tarefa
se conecta ao cubo publicado e processa os dados de acordo com a
instrução de processamento.

Para realizar esta tarefa, será necessário criar um novo projeto do


SSIS. Neste caso, terá o nome de SSIS_ProcessarCubo. Após o projeto
criado, também é interessante renomear o nome do pacote. Neste caso
renomeei para ProcessarCubo.dtsx.

Neste momento pode-se arrastar a tarefa Analysis Services


Processing Task da caixa de ferramentas para a área de Control Flow do
pacote.

MVTech · 85
Do Banco de Dados Relacional à Tomada de Decisão

Em seguida, clique com o botão direito na tarefa que está no


Control Flow e aponte o mouse para Edit.

Na tela que se abre, acesse o item Processing Settings que se


encontra no menu lateral esquerdo. Ao lado da caixa de seleção Analysys
Services connection manager existe um botão New. Clique neste botão.

MVTech · 86
Do Banco de Dados Relacional à Tomada de Decisão

Uma nova tela perguntando o caminho do servidor do SQL Server


Analysis Services é aberta e solicita que seja feita a conexão e autenticação
ao ambiente. Selecione a opção Create a connection to a computer running
Analysis Services e clique no botão Edit.

Neste momento, uma tela familiar é apresentada. É a mesma tela


utilizada nos capítulos anteriores para se conectar à fontes de dados.

MVTech · 87
Do Banco de Dados Relacional à Tomada de Decisão

Preencha os dados de acesso e autenticação do seu ambiente do SQL


Server Analysis Services e clique em OK.

Após concluir a conexão, volte até a tela de edição da tarefa de


processamento do cubo e repare que alguns itens intermediários à tela
foram habilitados. Estes itens permitem que seja informado quais objetos
serão processados e com qual opção de processamento. Para fins de
conhecimento, vou separar o processamento do cubo em duas fases, mas
você pode deixar em uma única se quiser. Na primeira fase a tarefa irá

MVTech · 88
Do Banco de Dados Relacional à Tomada de Decisão

processar somente as dimensões e, na segunda fase, processar as


measures e o cubo.

Para selecionar quais objetos serão processados, clique no botão


Add que está no centro da tela.

Uma nova tela se abre e nesta pode-se expandir os agrupadores


de objetos. Como na primeira fase serão processadas somente as
dimensões, marca-se todas elas e em seguida finaliza clicando em OK.

MVTech · 89
Do Banco de Dados Relacional à Tomada de Decisão

Reparem que a área central da tela agora é preenchida com os


objetos selecionados e é informada qual opção de processamento será
realizada. Veja no capítulo “Processamento do SSAS, direto ao ponto” na
sessão do Analysis Services, o que é cada uma destas opções.

MVTech · 90
Do Banco de Dados Relacional à Tomada de Decisão

Finalize a tela até voltar ao pacote, visualizando o Control Flow e


sua primeira tarefa. Lembre-se de renomear a tarefa, para saber o que ela
representa. No meu caso, vou renomear para “Processar Dimensões”.

Repita os mesmos passos para criar uma segunda tarefa do tipo


Analysis Services Processing Task e nesta configurar o processamento do
cubo. A diferença desta segunda terafa para a primeira são os objetos que
serão processados. Na segunda tarefa, selecione os objetos relativos ao
cubo.

MVTech · 91
Do Banco de Dados Relacional à Tomada de Decisão

Confirme até voltar à área de Control Flow do pacote. Chegando


no pacote, crie uma sequencia lógica de execução fazendo com que a
primeira tarefa seja executada somente após a segunda. Faça isso ligando
a constraint de sucesso da primeira na segunda tarefa.

MVTech · 92
Do Banco de Dados Relacional à Tomada de Decisão

Para validar se o processamento do cubo está correto, execute o


pacote. Se após a execução as tarefas finalizarem com o sinal verde,
executaram com sucesso!

MVTech · 93
Do Banco de Dados Relacional à Tomada de Decisão

A publicação de pacotes no SQL Server 2014 é do mesmo formato


que no SQL Server 2012, através do SSIS Catalog. Este catálogo é criado
dentro do engine relacional e armazena a estrutura dos pacotes
permitindo que seja melhor organizado e gerenciado pelo SQL Server. O
banco de dados de sistema MSDB ainda pode ser utilizado para consultar
informações sobre o execuções do pacote, retornando diversos resultados
gerenciais para os desenvolvedores.

Neste capítulo será criado o SSIS Catalog e também será feita a


publicação do pacote criado no capítulo anterior. No capítulo seguinte
será criado um JOB que executará o pacote automaticamente por meio
dos seus agendamentos.

A primeira atividade é criar o SSIS Catalog. Para isso, acesse o


ambiente relacional do servidor que tem a instalação do Integration
Services. No meu caso, é o mesmo ambiente de desenvolvimento, então
acessarei o MVS-SQL2014\SQL2014.

MVTech · 94
Do Banco de Dados Relacional à Tomada de Decisão

Reparem que existe um diretório do Integration Services Catalogs,


mas quando este diretório é expandido, não existe nenhum catalogo. É
neste lugar que o SSIS Catalog deve ser criado. Para isso, clique com o
botão direito do mouse no diretório e aponte para Create Catalog.

Caso não esteja habilitado, é necessário habilitar a integração com


CLR. Para isso, marque a caixa de seleção Enable CLR Integration. Após esta
marcação, a tela estará habilitada para criar o catálogo. O nome padão é
SSISDB e é necessário informar uma senha.

MVTech · 95
Do Banco de Dados Relacional à Tomada de Decisão

Feito isso, conclua a tela clicando em OK. Após alguns segundos,


volte à seu Object Explorer do SQL Server Management Studio e veja que
o catálogo foi criado no diretório Integration Service Catalogs.

Neste momento você possui um ambiente para publicar seu


pacote. Agora volte até o pacote criado no capítulo anterior para processar
o cubo.

Após abrir o SQL Server Data Tools, clique com o botão direito no
projeto da Solution Explorer e aponte para Deploy.

MVTech · 96
Do Banco de Dados Relacional à Tomada de Decisão

Uma tela irá se abrir e solicitará o endereço do servidor e qual


caminho será armazenado. Informe o endereço do servidor no qual
acabou de criar o SSIS Catalog no campo Server name. No campo Path,
clique em Browse para criar um diretório de armazenamento.

MVTech · 97
Do Banco de Dados Relacional à Tomada de Decisão

Após clicar em Browse, uma nova tela irá se abrir. Na parte inferior
esquerda existe um notão New Folder, para criar um novo diretório. Clique
neste botão para informar o nome do diretório que receberá este pacote.

No meu caso, informei o nome AdventureWorks, pois é o


processamento do cubo do AdventureWorksDw2012.

Confirme a criação do diretório e volte até a tela inicial, onde


informa o servidor e o caminho.

MVTech · 98
Do Banco de Dados Relacional à Tomada de Decisão

Avance para a próxima tela, na qual tem um resumo do que será


feito. Em seguida, clique no botão deploy. Se tudo ocorreu bem, seu
pacote será publicado no servidor que foi informado.

Para verificar a publicação, volte até o SQL Server Management


Studio e expanda o SSISDB. Será possível visualizar o diretório que acabou
de criar, o projeto do SSIS e o pacote publicado.

MVTech · 99
Do Banco de Dados Relacional à Tomada de Decisão

MVTech · 100
Do Banco de Dados Relacional à Tomada de Decisão

Após criar e publicar seu pacote, é recomendado criar um


agendamento automatizado para que a execução do pacote seja feita sem
a intervenção humana. Isso facilitará (e muito) os processos que devem ser
executados sequencialmente e em horários não-convencionais.
Geralmente os JOBs são executados de madrugada, quando há menos
fluxo no ambiente de produção.

A criação do JOB pode ser feita via código T-SQL ou através de


wizard do SQL Server Management Studio. Neste capítulo vamos criar o
JOB através do wizard.

Para isso, acesse o SQL Server Management Studio e vá até o


serviço do SQL Server Agent. Garanta que ele esteja em execução, com o
ícone verde. Caso ele esteja com o ícone vermelho, clique com o botão
direito em cima dele e aponte para Start.

MVTech · 101
Do Banco de Dados Relacional à Tomada de Decisão

Após garantir que o SQL Server Agent esteja executando, clique


com o botão direito e aponte para New >> JOB.

MVTech · 102
Do Banco de Dados Relacional à Tomada de Decisão

Uma tela irá se abrir, permitindo criar o serviço automatizado. No


menu da esquerda, garanta que está no item General, e então, no campo
Name informe o nome do JOB. Neste caso, vou chamar de Processar Cubo
Adventure Works.

Acesse o item Steps no menu da esquerda, para criar quais passos


serão executados. Na parte inferior da tela existe um botão New, clique
neste botão e veja uma nova tela se abrindo. Nesta tela, deve-se informar
o nome do passo no campo Step name, vou nomear como Processamento.
O campo seguinte é para informar qual o tipo de execução realizada.
Alterando o tipo para SQL Server Integration Services Package, o contexto
da tela muda, permitindo que seja feita a conexão ao pacote. Então
preencha os dados do servidor e do caminho do pacote no SSIS Catalog.

MVTech · 103
Do Banco de Dados Relacional à Tomada de Decisão

Após escolher o pacote, confirme para finalizar a tela e voltar para


a configuração do JOB. Em seguida, vá ao menu da esquerda e mude para
Schedule, permitindo criar o agendamento para estas execuções. Na parte
inferior esquerda da tela tem novamente um botão New. Ao clicar neste
botão é feita a configuração do agendamento, inclusive com sua
recorrência. Neste exemplo, estamos agendando o processamento todos
os dias depois que a movimentação de dados acontece. Isso ocorre,
supostamente, meia noite e meia. No campo Name informe o nome. No
meu caso, vou chamar de Diario. O campo seguinte é sobre o tipo de
execução: se será executado recorrentemente, se é executado somente
uma vez, entre outras. Como é para executar todos os dias, mantenha
como Recurring. Na configuração da frequência de como o JOB será

MVTech · 104
Do Banco de Dados Relacional à Tomada de Decisão

executado, informa-se a periodicidade. No caso não é semanal e sim


diário, alterando a caixa de seleção Occurs de Weekly para Daily,
mantendo a opção Recurs every em 1.

Na sessão referente à execução diária, marque a opção Occurs


once at para garantir que executará uma vez por dia, neste horário, e
informe 00:30:00. Este horário é equivalente a meia-noite e meia. Na
sessão seguinte, sobre a duração, coloque a data de início (que por padrão
fica a data de hoje) e deixe a opção No end date selecionada. Assim, o JOB
será executado a partir de hoje sem data para terminar. Após esta
configuração, confirme no botão OK e volte para a tela inicial.

MVTech · 105
Do Banco de Dados Relacional à Tomada de Decisão

Confirme também a tela principal e volte ao SQL Server


Management Studio. Repare que agora existe o JOB com o nome
Processar Cubo Adventure Works dentro do diretório Jobs no serviço do
SQL Server Agent.

É possível aguardar até o horário agendado para verificar se a


execução foi configurada e executada com sucesso, ou então, executar
manualmente. Para isso, clique com o botão direito do mouse no JOB e
aponte para Start Job at Step. Confirme que quer executar o Job
manualmente e aguarde sua conclusão.

MVTech · 106
Do Banco de Dados Relacional à Tomada de Decisão

Após a execução do JOB, você verá o sinal verde de sucesso.

Também poderá consultar o histórico de execuções, que


contempla tanto as execuções manuais quanto as agendadas. Para isso,
clique com o botão direito no JOB e aponte para View History.

MVTech · 107
Do Banco de Dados Relacional à Tomada de Decisão

Uma lista com as execuções será apresentada, com os resultados


ao lado do horário. Se rodou com sucessso fica o sinal verde. Se ocorreu
alguma falha, fica um alerta vermelho.

MVTech · 108
Do Banco de Dados Relacional à Tomada de Decisão

SQL SERVER ANALYSIS


SERVICES

MVTech · 109
Do Banco de Dados Relacional à Tomada de Decisão

O principal item a ser criado no SSAS é o Cubo. Ele será


responsável por criar todos os cálculos internos e armazenar a informação
já processada com o foco em facilitar o retorno para os usuários. Neste
capítulo será criado um cubo baseado no Data Warehouse
AdventureWorksDW2012.

Após abrir o SSDT (SQL Server Data Tools) e criar o projeto de


Analysis Services Multidimensional and Data Mining Project (e no meu
caso chamei de SSAS_PrimeiroCubo), alguns diretórios são criados na
Solution Explorer, dos quais vamos usar Data Sources, Data Source Views,
Cubes e Dimensions.

No diretório de Data Sources, é feita a conexão com o banco de


dados que armazena o Data Warehouse. Para configurar esta conexão,
clique com o botão direito no diretório e então aponte para New Data
Source.

A tela de configuração é idêntica às já conhecidas, utilizadas na


movimentação de dados com o SQL Server Integration Services.

Neste momento, deve-se fazer a conexão com o banco de dados


AdventureWorkdDW2012 armazenado no SQL Server 2014.

O próximo diretório é o Data Source Views, que é responsável por


apontar com base na conexão, quais serão as tabelas dimensões e fatos a
serem utilizadas no projeto. Para isso, clique com o botão direito no
diretório e aponte para New Data Source View.

MVTech · 110
Do Banco de Dados Relacional à Tomada de Decisão

Na tela de wizard que se abre, você seleciona qual é a conexão que


aponta para o Data Warehouse e avança. A tela seguinte apresenta os
objetos que estão disponíveis no Data Warehouse. Você deve procurar a
tabela fato chamada FactInternetSales, e então clicar no botão > que irá
incluir esta tabela no Data Source View.

MVTech · 111
Do Banco de Dados Relacional à Tomada de Decisão

Após clicar em >, você irá perceber que a tabela Fato está agora
na lista de objetos incluídos. Logo mais abaixo, o botão Add Related Tables
fica habilitado, permitindo que o SSAS inclua também as tabelas que
possuem relacionamentos com a FactInternetSales.

MVTech · 112
Do Banco de Dados Relacional à Tomada de Decisão

Após as outras tabelas serem incluídas, repare que uma outra


tabela Fato foi junto. Esta tabela chamada FactInternetSalesReason deve
ser retirada. Para isso, selecione esta tabela e clique no botão <.

MVTech · 113
Do Banco de Dados Relacional à Tomada de Decisão

Na sequência confirme os acessos, clicando em Finish. Agora


repare que o item foi incluso na Solutions Explorer.

O próximo diretório é o Cubes. É neste diretório que se cria o cubo,


adicionando as dimensões e calculando as medidas. Para começar, clique
com o botão direito no diretório Cube e aponte para New Cube.

MVTech · 114
Do Banco de Dados Relacional à Tomada de Decisão

Na janela que se abre, existe a possibilidade de criar um cubo


baseado em tabelas que já existem, criar um cubo vazio ou gerar tabelas
no ambiente baseado em templates. Por padrão já vem selecionado Use
existing tables e é com este item selecionado que vamos avançar. Na tela
seguinte informamos qual será a tabela que contém os valores para as
Measures Groups e há um botão de sugestão.

MVTech · 115
Do Banco de Dados Relacional à Tomada de Decisão

Caso você não conheça o ambiente em que está trabalhando, pode


clicar neste botão e o SSAS analisa as tabelas que possuem a maior
quantidade de relacionamentos e interpreta como sendo a fato, e então,
sugere esta tabela como sendo a que armazena as Measures Groups. Após
clicar no botão Suggest, veja que a tabela FactInternetSales ficou
selecionada, então avance para a próxima tela. Este é o momento de
informar quais serão as medidas convencionais existentes no projeto. É
obrigatório selecionar ao menos uma delas, então desmarque todas e
volte a selecionar somente a Sales Amount, que representa o total de
vendas. Então você pode avançar para a próxima tela.

Na tela seguinte, o SSAS sugere quais as tabelas podem ser


consideradas dimensões. Desmarque a tabela Fact Intenet Sales, pois já
sabemos que esta não é uma dimensão e sim uma fato!

MVTech · 116
Do Banco de Dados Relacional à Tomada de Decisão

Ao avançar para a próxima tela, basta finalizar clicando em Finish.


Neste momento, a estrutura básica do cubo já existe mas ainda não fez o
processamento. Isso irá acontecer após apontar qual é o ambiente em que
será publicado o cubo e, de fato, fazer o processamento e a publicação.

O diretório seguinte é Dimensions, que é automaticamente


preenchido com as dimensões que foram configuradas através da tela de
Cubes. Então neste momento não é necessário fazer nada neste diretório.

Com isso, seu primeiro cubo foi criado mas não foi processado
nem publicado. Nos próximos capítulos continuamos a trabalhar com este
cubo, até torná-lo acessível para nossos clientes.

MVTech · 117
Do Banco de Dados Relacional à Tomada de Decisão

Após o cubo, uma das principais atividades a ser realizada com o


SQL Server Analysis Services é criar as Measures que serão especializadas
com base nas dimensões do projeto. As medidas são os cálculos realizados
para responder alguma pergunta da área de negócios. Estas perguntas
serão elaboradas pelos usuários e nós, da área de Business Intelligence,
desenvolveremos o projeto para responder estas questões.

As measures são relativamente simples de se criar e podem ser


feitas de duas formas. Na hora da criação do cubo por meio do Wizard
(apresentado no capítulo anterior) do diretório Cube ou então após o cubo
já estar criado. Neste exemplo, vamos criar as medidas a partir do cubo já
criado no capítulo anterior. Para isso, abra o projeto que foi criado naquele
capítulo, expanda o diretório Cube e abra o objeto Adventure Works DW
2012.cube.

MVTech · 118
Do Banco de Dados Relacional à Tomada de Decisão

Neste objeto, procure na parte superior esquerda o bloco das


Measures, que possui a Measure Group Fact Internet Sales. Ao expandir
esta Measure Group, será possível ver a medida Sales Amount criada
através do wizard, na criação do cubo. Para garantir que a medida foi
calculada da forma correta, clique com o botão direito sobre ela e aponte
para Edit Measure.

Esta medida representa o somatório do total de vendas e deve


utilizar o sumarizador de somatório (SUM). Ao abrir a tela de Edit Measure,
é possível constatar que, de fato, o cálculo usado é o SUM. Outros cálculos
são possíveis, como Count of Rows (contagem de linhas), Minimum (menor
valor), Maximum (maior valor), First Value (primeiro valor), Last Value
(último valor), entre alguns outros.

MVTech · 119
Do Banco de Dados Relacional à Tomada de Decisão

Basta cancelar e voltar para a tela do Cube.

Para adicionar novas medidas nesta mesma Measure Group, basta


clicar com o botão direito no nome da Measure Group e apontar para New
Measure.

Quando a tela de incluir uma nova medida é apresentada, deve-se


escolher qual será o sumarizador da measure e em qual atributo (campo)
ele será aplicado.

Neste capítulo serão criadas duas novas measures, uma para Valor
do Custo e outra para Total de Imposto. Em ambas serão utilizados o
agregador de Soma. Para isso, selecione o item SUM na caixa de seleção
Usage e marque a coluna TotalProductCost em Source Column.

MVTech · 120
Do Banco de Dados Relacional à Tomada de Decisão

Clicando em OK, esta medida já estará dentro da Measure Group.


Repita estes últimos passos para criar a medida que fará a somatória dos
valores da coluna TaxAmt.

Após a criação desta segunda measure, seu ambiente contará com


as Measures Sales Amount (criada do capítulo anterior), Total Product Cost
e Tax Amt (criadas neste capítulo).

MVTech · 121
Do Banco de Dados Relacional à Tomada de Decisão

Quando se criam os cubos, geralmente se faz os cálculos-padrão


baseados em sumarização convencional do próprio Analysis Services. Estas
agregações podem ser SUM, AVG, MAX, MIN, COUNT, entre outras. Mas
em alguns casos, é preciso calcular medidas que não são padrões. Para
isso, usamos o recurso de CALCULATIONS.

Quando se fala de criar cálculos específicos, precisamos trabalhar


com código MDX (MultiDimensional eXpression). É um pouco diferente do
T-SQL que estamos acostumados no dia-a-dia, mas não se preocupe, com
estes dois links de referência dá pra ter uma ideia de MDX:

MDX Syntax Elements (MDX):

http://technet.microsoft.com/en-us/library/ms146020.aspx

MDX Language Reference (MDX):

http://technet.microsoft.com/en-us/library/ms145595.aspx

Neste capítulo vamos criar um membro calculado que represente


a Lucratividade de um produto com base no Total de Vendas, Custo do
Produto e Impostos. Destes valores citados, o Total de
Vendas, Custo e Impostos já são measures calculadas anteriormente pelo
Analysis Services e nós vamos precisar criar somente o cálculo
da Lucratividade.

Estas três measures foram explicadas no capítulo anterior, e


seguiremos neste mesmo projeto.

MVTech · 122
Do Banco de Dados Relacional à Tomada de Decisão

As measures criadas foram Total Product Cost, Sales Amount e Tax


Amt. A parte para fazer o novo cálculo de measure se encontra dentro do
objeto Adventure Works DW2012.cube, na aba Calculations. Para acessar
esta aba, abra o projeto que foi utilizado no capítulo anterior, expanda o
diretório Cubes da Solution Explorer e abra o objeto Adventure Works
DW2012.cube. Procure a aba Calculations, na parte superior da tela.

Abrindo esta aba, veja do lado esquerdo o Script Organizer já com


o CALCULATE feito. Logo abaixo, clique com o botão direito em uma parte
vazia e aponte para New Calculated Member.

Neste momento, uma tela se abre na área central: é onde você


preenche os dados do cálculo.

MVTech · 123
Do Banco de Dados Relacional à Tomada de Decisão

Primeiro deve-se colocar o nome do campo calculado. No caso,


vou chamar de profitability (lucratividade, em inglês). Nos próximos
capítulos vou explicar como deixar o termo da camada de apresentação
em outro idioma (no nosso caso, o Português).

No campo seguinte, Parent Hierarchy, informamos onde será


colocado o membro calculado. Para o SSAS não criar nenhuma Measure
Group nova, mantenha o padrão, que é Measures. Este item pode conter
outras Measure Groups e você precisará selecionar outro item, caso queira
mudar de lugar.

A seguir é o campo mais importante (Expression), onde você irá


montar a formula do cálculo. Neste caso, como vamos montar a
lucratividade, vamos fazer a forma da seguinte forma:

([Measures].[Sales Amount] –

([Measures].[Total Product Cost] + [Measures].[Tax Amt]))

/ [Measures].[Sales Amount]

MVTech · 124
Do Banco de Dados Relacional à Tomada de Decisão

Para facilitar sua vida, você pode arrastar os itens que estão nas
suas Measures para o campo Expression e ele já monta no formato que
o MDX entende.

Isso não significa que esta é a única formula que você deve
customizar no seu projeto. Este é só um exemplo, você vai analisar sua
necessidade e fazer sua formula!

Os outros campos você preenche de forma intuitiva, lembrando de


informar o nome do seu cálculo entre colchetes no campo Name. Este
nome será refletido dentro da Measure. Veja onde ele impacta.

Alterando a formatação do campo para “Percent” no Format String,


para o dado ser plotado como um percentual.

E por fim Selecionando qual Measure Group você vai atrelar ao seu
cálculo, na opção de Associated Measure Group.

MVTech · 125
Do Banco de Dados Relacional à Tomada de Decisão

Se a fórmula que você criou funcionar e você processar o cubo, na


sua análise você conseguirá consumir informações da lucratividade ou
alguma outra formula que tenha criado.

Reparem na análise, caso você tenha uma hierarquia de membros.


Quando um membro está “agrupado”, o próprio servidor OLAP se
encarrega de sumarizar os valores que estão dentro daquele grupo
específico e lhe apresenta o resultado sumarizado. Veja o valor da
categoria Accessories, depois veja da subcategoria Road Bikes e por fim
dos objetos Road-150 Red e Road-250 Black.

MVTech · 126
Do Banco de Dados Relacional à Tomada de Decisão

Fazendo o cálculo uma única vez, sempre que precisar recuperar


aquele valor, é só arrastar para sua análise como
uma Measure convencional da sua Measure Group.

MVTech · 127
Do Banco de Dados Relacional à Tomada de Decisão

Quando se criam as dimensões através do Wizard do cubo, o SSAS


inclui somente as chaves de relacionamento entre a Tabela Fato e as
Dimensões como atributos visíveis aos usuários. Novos atributos devem
ser habilitados às dimensões, permitindo que as análises sejam
satisfatórias para quem usa nosso projeto.

Para adicionar novos atributos, é na dimensão que se deve


trabalhar, habilitando a visualização do atributo já existente na estrutura à
área que será visível ao usuário. Para concluir esta tarefa, deve-se abrir o
objeto Adventure Works DW2012.cube que está no diretório Cubes. Na
esquerda da tela, logo abaixo da área onde foram configuradas as
Measures, existe uma caixa com o nome Dimensions. Nesta área, todas as
dimensões existentes no projeto são apresentadas, permitindo que sejam
manipuladas. No exemplo deste capítulo, vamos trabalhar para adicionar
outras duas dimensões existentes no Data Warehouse para o projeto de
Business Intelligence e permitir que outros atributos sejam visíveis para o
usuário final.

A primeira coisa a se fazer é adicionar as outras dimensões. Neste


caso, deve-se adicionar as dimensões de DimProductCategory (Categoria)
e DimProductSubcategory (Sub-Categoria), que são relacionadas à
DimProduct (Produto). Será necessário alterar o Data Source Views, visto
que somente os itens incluídos neste objeto é que aparecem para o
projeto. Então vá até o diretório Data Source Views e abra o objeto
Adventure Works DW2012.dsv e procure o botão Add/Remove Objects que
parece uma caixa quadriculada com o sinal de positivo, no canto superior
esquerdo.

MVTech · 128
Do Banco de Dados Relacional à Tomada de Decisão

Este botão permite incluir as novas dimensões de que precisamos.


Ao clicar, a tela que se abre é igual àquela que foi utilizada para incluir
todos os objetos relacionados à tabela Fato utilizada no capítulo sobre a
criação do cubo. Deve-se adicionar as tabelas DimProductCategory e
também DimProductSubcategory, então selecione estas dimensões na
caixa da esquerda e clique em > para incluir no projeto.

MVTech · 129
Do Banco de Dados Relacional à Tomada de Decisão

Após avançar a tala, conclua a inclusão. Neste momento, as


dimensões foram adicionadas ao projeto, mas ainda não estão disponíveis
para uso.

Para o próximo passo, vá até o diretório Dimensions na Solution


Explorer, clique com o botão direito e aponte para New Dimension.

MVTech · 130
Do Banco de Dados Relacional à Tomada de Decisão

Na tela que se abrir, deixe selecionado o item Use an existing table,


e avance para a próxima tela. Nesta tela que se abriu, selecione
DimProductCategory na lista de seleção Main table.

MVTech · 131
Do Banco de Dados Relacional à Tomada de Decisão

Após selecionar, avance para a próxima tela, onde devem ser


selecionados os atributos que estarão disponíveis para nossa
manipulação. Clique na caixa de seleção que está ao lado do título da
coluna Attribute Name e veja que todos os itens ficaram habilitados.

Avance para a próxima tela e finalize o processo clicando em


Finish.

Repita estes mesmos passos, para a dimensão


DimProductSubCategory. Após incluir esta segunda dimensão, ambas

MVTech · 132
Do Banco de Dados Relacional à Tomada de Decisão

estarão disponíveis para se trabalhar no projeto. Confira no diretório


Dimensions da Solution Explorer.

Depois de incluir estas dimensões no projeto, elas precisam ser


disponibilizadas para manipulação dentro do cubo. Para isso, expanda o
diretório Cubes e abra o Adventure Works DW2012.cube.

Procure o botão Add Cube Dimension, no menu de contexto do


cubo.

Na tela que se abre, selecione os itens Dim Product Category e Dim


Product Subcategory e conclua clicando em OK.

MVTech · 133
Do Banco de Dados Relacional à Tomada de Decisão

Voltando ao segundo parágrafo deste capítulo, veja que agora o


bloco de Dimensions já conta com as duas dimensões que foram incluídas
no cubo.

MVTech · 134
Do Banco de Dados Relacional à Tomada de Decisão

Estas duas novas dimensões serão usadas no próximo capítulo,


para criar a hierarquia de atributos - um recurso interessante para nossos
usuários.

Ainda não terminamos a proposta deste capítulo, falta alterar as


visibilidades dos atributos existentes nas dimensões. Neste processo
vamos modificar a dimensão Dim Sales Territory, mas todas as outras
também devem ser modificadas para seu cliente ter total uso da solução.

Para isso, expanda a Dim Sales Territory e clique em Edit Dim Sales
Territory.

MVTech · 135
Do Banco de Dados Relacional à Tomada de Decisão

A tela de edição da dimensão possui três áreas. A primeira é


Attributes, que representa os itens que estão disponíveis para o usuário. A
área central é a Hierarchies, que representa os atributos em hierarquias,
que vamos trabalhar no próximo capítulo. E por fim existe o Data Source
View, que são os objetos desta dimensão atribuídos através do Data
Source Views.

A primeira coisa é retirar o código para o usuário final, isto é, se


ele não precisar saber do código interno de algum item. Vamos mudar a
visibilidade, para questões de aprendizado. Mas use isso somente se não
for necessário para seu usuário. Para deixar o item invisível, selecione o
atributo na área de Attributes, vá até a propriedade
AttributeHierarchiVisible e mude para False.

MVTech · 136
Do Banco de Dados Relacional à Tomada de Decisão

Agora arraste da área de Data Source View para a área de Attributes


os itens que devem aparecer para seus usuários.

MVTech · 137
Do Banco de Dados Relacional à Tomada de Decisão

Após arrastar, basta salvar a dimensão e os novos atributos estarão


disponíveis para os usuários.

Faça isso para todas as dimensões cujos atributos precise


disponibilizar aos seus usuários.

MVTech · 138
Do Banco de Dados Relacional à Tomada de Decisão

Algumas apresentações de dados ficam melhor dispostas quando


existe uma hierarquia e alguns dados ficam agrupados em uma
representação mais ampla, macro, não-excludente aos detalhes daquela
informação. Esta hierarquia de membros permite que sejam realizadas
análises enquadradas em grupos e não somente ao item mais granular e
específico. Neste capítulo, o objetivo é mostrar como criar hierarquias
dentro da estrutura das dimensões.

Para isso, abra o projeto em que trabalhamos no capítulo anterior,


expanda o diretório Cubes e abra o objeto Adventure Works
DW2012.cube.

Na sessão de Dimensions, procure a Dim Product, expanda


clicando sobre o botão de + e então clique em Edit Dim Product. Na tela
que se abre, igual à tela que vimos no capítulo anterior, deve-se deixar
invisível o código do produto, alterando a propriedade
AttributeHierarchiVisible de True para False. Também é necessário arrastar
alguns itens que serão usados no projeto, da área Data Source View para
a área Attributes.

MVTech · 139
Do Banco de Dados Relacional à Tomada de Decisão

Neste momento, é hora de adicionar as outras tabelas que estão


relacionadas à dimensão Dim Product, para que seja possível consumir
dados destas outras dimensões. Para isso, no Data Source View, onde já
existe a tabela DimProduct, clique com o botão direito na tela e aponte
para Show Tables.

MVTech · 140
Do Banco de Dados Relacional à Tomada de Decisão

Na tela que se abrir, selecione as dimensões DimProductCategory


e também DimProductSubcategory, que foram adicionadas ao projeto no
capítulo anterior.

MVTech · 141
Do Banco de Dados Relacional à Tomada de Decisão

Confirme clicando em OK e veja que as duas dimensões agora


estão disponíveis para se incluir nos itens visíveis da dimensão de produto,
que será apresentada ao usuário final.

MVTech · 142
Do Banco de Dados Relacional à Tomada de Decisão

Neste momento, é hora de arrastar os itens de Categoria e Sub-


Categoria para a área dos Attributes desta dimensão. Arraste o atributo
EnglishProductSubcategoryName da dimensão DimProductSubcategory.

MVTech · 143
Do Banco de Dados Relacional à Tomada de Decisão

Faça a mesma coisa para o atributo EnglishProductCategoryName


da dimensão DimProductCategory.

Neste momento, os atributos Nome, Categoria e Sub-Categoria do


Produto estão disponíveis para os usuários através da dimensão, mas

MVTech · 144
Do Banco de Dados Relacional à Tomada de Decisão

ainda não estão como hierarquias. Para realizar esta tarefa, arraste o
atributo English Product Category Name para qualquer parte da área
central, Hierarchies.

Repare que foi criada uma estrutura que permite que novos
atributos sejam incluídos em outros níveis da hierarquia. Cada novo
atributo reflete um novo nível de detalhe. Inclua no nível seguinte o
atributo English Product Subcategory Name. Em seguida, no terceiro nível,
arraste o atributo English Product Name.

MVTech · 145
Do Banco de Dados Relacional à Tomada de Decisão

Agora, um alerta apareceu no topo da estrutura de hierarquia. Este


alerta se dá ao fato de algum membro das dimensões não terem
relacionamento. Ao lado deste alerta, fica o nome que deve informar à
estrutura, para que ela seja salva na dimensão. Vou colocar o nome de
Products.

Após salvar e processar a dimensão, é possível ver através da aba


Browser que os dados foram colocados em agrupamentos da hierarquia,
conforme foi montado neste capítulo. A informação mais ampla é a
categoria, no segundo nível a Sub-Categoria e por final o nome do
Produto.

MVTech · 146
Do Banco de Dados Relacional à Tomada de Decisão

Não se preocupe se você não conhece sobre processamento dos


dados, falaremos sobre este assunto nos próximos capítulos.

MVTech · 147
Do Banco de Dados Relacional à Tomada de Decisão

Um recurso altamente utilizado por tomadores de decisão de


negócios (ou termo em inglês Business Decision Makers) para analisar
quantitativamente os resultados são os KPIs (Key Performance Indicator,
ou Indicadores-Chave de Performance). Basicamente são indicadores (ou
ponteiros) que mostram o resultado de forma gráfica, seguindo um
padrão universal de cores, como um semáforo, passando por Vermelho,
Amarelo e Verde. Hoje em dia é possível colocar mais variações dentro de
um KPI, tendo análises com 5 ou até mais “intervalos de resultados”. Isso
surgiu pelo fato de um resultado dividido apenas em 3 valores representar
uma análise simplista do acontecimento. A ideia deste capítulo é mostrar
diretamente no SQL Server Analysis Services como fazer um KPI com 3
intervalos, mas se precisar de mais, o SQL Server Reporting Services faz isso
sem nenhuma dificuldade.

Para exemplificar este processo de criação e uso do KPI, vamos


trabalhar novamente com banco AdventureWorksDW2012 e vamos
aproveitar o cálculo que fizemos alguns capítulos atrás para apresentar a
lucratividade de um produto.

Seguindo a mesma linha do exemplo do cálculo, é necessário abrir


o diretório Cubes e em seguida abrir o objeto Adventure Works
DW2012.cube, para acessar a aba KPIs que fica ao lado da aba Calculations
usada naquele capítulo.

MVTech · 148
Do Banco de Dados Relacional à Tomada de Decisão

Dentro desta aba, é possível encontrar 3 áreas úteis, sendo duas


laterais e uma central. Todas são importantes e nos ajudarão nesta criação.
A primeira que vamos utilizar é a área superior da lateral esquerda,
chamada KPI Organizer. Nesta área iremos criar um novo KPI e é lá onde
ficam listados todos os KPIs já criados neste projeto. Clique com o botão
direito do mouse nesta área e aponte para New KPI.

Neste momento, repare na área central se transformando e


contextualmente habilitando diversos campos para trabalhar no KPI. Deve-
se preencher alguns campos. O primeiro dele é o campo Name. Reparem
que desta vez não colocamos o nome entre colchetes, simplesmente
informamos o nome, que pode inclusive ser o mesmo de alguma measure
já criada, não vai gerar conflito.

Na sequência é o campo Associated Measure Group, neste caso,


deve-se informar em qual Measure Group seus cálculos estão e será o
mesmo que o KPI ficará associado. Neste caso, só temos o “Fact Internet
Sales”, então o selecione na caixa de seleção.

MVTech · 149
Do Banco de Dados Relacional à Tomada de Decisão

O campo seguinte é o Value Expression. Este campo deve receber


um valor, que inclusive pode ser um campo de uma measure. Arrastando
e soltando a measure, o valor é preenchido no formato correto. Depois do
campo preenchido com o cálculo de lucratividade feito em um capítulo
anterior, este resultado poderá ser reutilizado nos demais campos da
configuração através da função KpiValue. Usaremos este recurso mais à
frente.

Preencha o campo de Value Expression com o código

[Measures].[Profitability]

MVTech · 150
Do Banco de Dados Relacional à Tomada de Decisão

O próximo campo é o Goal Expression, que também deve receber


um valor. Neste caso, pode-se atribuir “pesos diferentes” para cada
categoria de produto, com o objetivo de equilibrar a análise. Reparem que
neste momento retorna-se o atributo English Product Category Name da
dimensão DimProduct. Com essa atribuição de pesos, posso chamar este
campo através da função KpiGoal e os membros que retornarão desta
estrutura terão os pesos atribuídos já calculados. O código desta
atribuição é um CASE WHEN simples, onde ele verifica se um membro é o
especificado e então, atribui um peso à ele. Veja o código:

Case

When [Dim Product].[English Product Category


Name].CurrentMember Is [Dim Product].[English Product Category
Name].[Accessories] Then .40

When [Dim Product].[English Product Category


Name].CurrentMember Is [Dim Product].[English Product Category
Name].[Bikes] Then .12

When [Dim Product].[English Product Category


Name].CurrentMember Is [Dim Product].[English Product Category
Name].[Clothing] Then .20

When [Dim Product].[English Product Category


Name].CurrentMember Is [Dim Product].[English Product Category
Name].[Components] Then .10

Else .12

End

A tela, com o código, fica assim:

MVTech · 151
Do Banco de Dados Relacional à Tomada de Decisão

Seguindo, o próximo campo é o Status Indicator, que é a


representação gráfica que sua informação irá apresentar quando for
aplicada no relatório. Normalmente os ícones visuais ficam numa
representação de semáforo, mas você pode utilizar outros como
bandeiras, setas, cilindros, faces, etc.

Este campo está atrelado diretamente ao Status Expression. Este


campo contém a expressão que irá resultar no valor ser vermelho, amarelo
ou verde. O cálculo é atribuído a apenas três valores: o vermelho é o valor
de –1, o amarelo é o valor de 0 e o verde é o valor de +1. Veja o código
para gerar este valor:

Case

MVTech · 152
Do Banco de Dados Relacional à Tomada de Decisão

When KpiValue("Profitability") /

KpiGoal ("Profitability") >= .90

Then 1

When KpiValue("Profitability") /

KpiGoal ("Profitability") < .90

And

KpiValue("Profitability") /

KpiGoal ("Profitability") >= .80

Then 0

Else -1

End

Reparem que neste momento as funções KpiValue e KpiGoal foram


chamadas, passando por parâmetro o nome do KPI. Isso significa que,
independente do cálculo que existir dentro destes campos, a chamada
destas funções permite que você reutilize o código contido naquele
campo.

MVTech · 153
Do Banco de Dados Relacional à Tomada de Decisão

Mais abaixo na tela é possível ver algumas configurações. Neste


caso, é possível ver a tendência do resultado, que é apontado dentro do
campo Trend Indicator e Trend Expression.

No campo Trend Indicator, o mais usado são as setas, já que elas


apontam para cima se a tendência for um crescimento (+1), apontam para
a direita se for mantido (0) e apontam para baixo (-1) se a tendência é para
diminuir.

MVTech · 154
Do Banco de Dados Relacional à Tomada de Decisão

O código que você deve escrever para a tendência também segue


a mesma lógica de Status Expression, com resultados variando entre –1, 0
ou +1. Forcei manualmente valor –1 para garantir que a tendência desta
análise seja negativa e a seta seja mostrada para baixo. Fica uma sugestão
para vocês: mudem o valor entre esses –1, 0 e +1 e vejam o resultado da
tendência mudar na visualização dos dados.

Pronto, o KPI está criado e agora é o momento de analisar o


resultado com ele. Para isso, precisa-se processar o cubo novamente.
Façam o processamento e então conseguirão ver os resultados do KPI
dentro da sua análise.

Caso queira testar o KPI antes de enviar para seus clientes, clique
no ícone Browser View e o resultado será mostrado. Para voltar à
visualização anterior, clique em Form View logo à esquerda do Browser
View.

MVTech · 155
Do Banco de Dados Relacional à Tomada de Decisão

Quando se trabalha com projetos de BI em uma empresa que pode


ter usuários ao redor do mundo, faz total sentido nós traduzirmos a
camada de apresentação de nossos atributos, dimensões e measures,
facilitando o entendimento e o uso dos resultados pelo usuário final
dentro de sua língua materna.

Esta necessidade é mais comum do que imaginamos, ainda mais


neste últimos anos, com a facilidade e a expansão de trabalho remoto para
empresas estrangeiras. Conheço algumas pessoas que de suas casas fazem
projetos internacionais, mesmo nunca tendo contato pessoal com seu
empregador. Pode parecer estranho, mas acontece.

Neste capítulo, vamos trabalhar para criar essa


“internacionalização” de projetos construídos no SSAS, definindo quais
termos serão usados na língua do cliente e quais estarão sem tradução.
Vale lembrar que a tradução é um mecanismo que altera a legenda e o
rótulo da informação postada na tela (atributo) e não o dado (membro)
em si. Isso significa que você não terá seus dados traduzidos, mas sim os
títulos dos campos que eles representam.

Outro ponto importante é que uma tradução se dá pela definição


de dois valores, um sendo o ID do idioma e o outro a tradução que aquele
valor representa. O idioma padrão do device (repare que não usei o termo
computador propositalmente) consumindo os dados do cubo é fornecido
por meio das configurações de localidade, que passa através do LCID
(Locale ID – Identificador de Localidade) para a ferramenta cliente.

Mais uma vez vamos expandir o projeto já criado nestes últimos


capítulos.

Abra o projeto expanda o diretório Cubes, abra o objeto Adventure


Works DW2012.cube e por fim visualize e edite a Dim Product. Você pode
ver a chave do produto (que não está visível para a ferramenta cliente),

MVTech · 156
Do Banco de Dados Relacional à Tomada de Decisão

também os nomes da categoria, subcategoria e produto, além dos outros


atributos existentes nesta dimensão. Todos os itens, porém, estão com
seus nomes originais, em inglês.

Esta visão da Dimensão já permite um tipo de tradução, que será


aplicada diretamente a seus atributos diretos - no caso, os campos listados
acima. Repare na parte superior da área de edição da dimensão existe a
aba Translations. É nesta aba que vamos trabalhar para traduzir os
atributos.

Clique no botão New Translation para adicionar uma nova coluna


atrelada ao idioma que deseja escrever os termos. O ícone é um globo
com duas setas.

MVTech · 157
Do Banco de Dados Relacional à Tomada de Decisão

Ao clicar no botão para adicionar uma nova tradução, uma tela


com a lista dos idiomas é apresentada. Nesta tela deve-se selecionar um
idioma por vez. Repare que ao adicionar o item para Portuguese (Brazil),
todos os labels da Dimensão Produto passarão a ser plotados no cubo em
português, de acordo com os termos que forem traduzidos nos
respectivos campos. Portanto, se você escrever alguma tradução errada,
ela será escrita de forma errada na tela do seu cliente.

MVTech · 158
Do Banco de Dados Relacional à Tomada de Decisão

Depois de processar a Dimensão e o Cubo, seus labels ficarão


apresentados de forma traduzida.

Antes (original – Inglês)

Depois (Português)

A mesma regra se aplica aos labels do Cubo, onde pode-se traduzir


as dimensões, nome do cubo e as measures que existem lá dentro.

Reparem que, neste caso, o ícone usado para adicionar uma


tradução é o mesmo globo, mas ao invés de possuir as duas setas, ele tem
um cubo em 3D e não é mais relacionado à dimensão, e sim ao cubo.

MVTech · 159
Do Banco de Dados Relacional à Tomada de Decisão

Vamos seguir os mesmos passos de antes. Após escolher o idioma


Portuguese (Brazil) dentro da tela de seleção, uma nova coluna se abre e
permite inserir os termos do idioma escolhido. Novamente, após inserir os
termos, processar o cubo e enfim atualizar a ferramenta-cliente... voilà, o
dado está traduzido para o idioma local do cliente!

MVTech · 160
Do Banco de Dados Relacional à Tomada de Decisão

Antes (original - Inglês)

MVTech · 161
Do Banco de Dados Relacional à Tomada de Decisão

Depois (Português)

Com isso, você consegue internacionalizar com pouco esforço seus


projetos - aumentando a satisfação de seus clientes, sejam eles internos
ou externos!

MVTech · 162
Do Banco de Dados Relacional à Tomada de Decisão

Após criar e configurar todos os objetos do ambiente, é chegada


a hora de processar os dados e publicar o cubo para que seja acessado
pelo cliente. O primeiro passo é apontar para o ambiente que possui a
instalação do SQL Server Analysis Services - e que você tenha acesso para
publicar. No meu caso vou publicar no ambiente de desenvolvendo, que
é o mesmo da engine relacional do SQL Server, então o apontamento do
ambiente será para MVS-SQL2014\SQL2014 e este apontamento deve ser
realizado nas propriedades do projeto.

Para isso abra o projeto que estava trabalhando até agora, vá até
a Solution Explorer, encontre o nome do projeto e clique com o botão
direito, aponte o mouse para Properties.

MVTech · 163
Do Banco de Dados Relacional à Tomada de Decisão

Nesta tela que se abre, veja no menu da esquerda a opção


Deployment e na área de contexto do lado direito, informe o caminho do
servidor e a instância do SSAS que pretende utilizar na propriedade Server,
dentro da sessão Target. O nome do projeto é colocado na propriedade
Database e você pode alterar, se for o caso.

MVTech · 164
Do Banco de Dados Relacional à Tomada de Decisão

Após finalizar clicando em OK, você termina a configuração do


apontamento para o servidor OLAP. Agora falta a publicação do projeto.
Para isso volte até a Solution Explorer, clique com o botão direito no nome
do projeto e aponte para Deploy.

MVTech · 165
Do Banco de Dados Relacional à Tomada de Decisão

Tanto na primeira publicação, quanto nas atualizações que


ocorrem depois, uma mensagem informando que o projeto não existe ou
que sofreu alterações desde a última vez que foi publicado é apresentada.
Esta mensagem é informativa, avisando que a estrutura foi modificada.
Preste atenção a esta mensagem, pois se não houve alteração na estrutura
e você está sendo alertado sobre estas mudanças, pode ser que alguma
coisa foi alterada por engano e isso será publicado no seu ambiente,
sobrepondo o atual. Se você alterou a estrutura e está ciente disso, siga
clicando em Yes neste aviso.

MVTech · 166
Do Banco de Dados Relacional à Tomada de Decisão

Na sequência o SSAS iniciará o processo de publicação e, se tudo


ocorrer bem, você será notificado com este sinal verde.

MVTech · 167
Do Banco de Dados Relacional à Tomada de Decisão

MVTech · 168
Do Banco de Dados Relacional à Tomada de Decisão

O deploy será responsável por publicar as estruturas desenvolvidas no SQL


Server Data Tools para dentro do SQL Server Analysis Services. Depois de
publicada a estrutura, você já poderá configurar os acessos ao cubo para
seus usuários. Mas quando qualquer alteração no ambiente relacional que
serve de origem para o cubo acontecer, este precisa processar os dados
novamente. Lembrando que o Data Warehouse é alimentado de tempos
em tempos, você também deve processar o cubo de tempos em tempos.
Este processo pode ser realizado diretamente dentro do SQL Server Data
Tools, do SQL Server Management Studio ou então por meio de um JOB
automatizado no SQL Server Integration Services. No próximo capítulo são
explicados os tipos e onde são aplicados os processamentos. Agora, se
precisar processar os dados para verificar se estão corretos, deve-se clicar
com o botão direito no objeto que quer processar e apontar o mouse para
Process. Veja como fica o processamento a partir do projeto.

MVTech · 169
Do Banco de Dados Relacional à Tomada de Decisão

Uma nova tela se abre apresentando algumas informações. Vá até


o final da página e clique em Run.

MVTech · 170
Do Banco de Dados Relacional à Tomada de Decisão

Em seguida outra tela se abre, mostrando o progresso da


publicação.

MVTech · 171
Do Banco de Dados Relacional à Tomada de Decisão

Se o Status ficar com o sinal verde, significa que processou com


sucesso e os dados já estarão atualizados no ambiente OLAP. Se quiser
verificar a publicação, acesse o SQL Server Management Studio se
conectando ao Analysis Services, expanda o item Databases e veja o que
projeto - que você acabou de publicar - está disponível.

MVTech · 172
Do Banco de Dados Relacional à Tomada de Decisão

É comum - durante o desenho/planejamento dos projetos de BI -


dedicarmos algumas atividades à performance e desempenho. Isso é
ótimo e ajuda muito, mas algumas coisas básicas como processar de forma
eficiente o cubo (e as dimensões) nem sempre são utilizadas. Digo isso por
encontrar diversos projetos em que o processamento do cubo está como
“padrão”. Fazendo uma analogia e forçando a barra um pouco, é como
criar todos índices que o DTA (Database Tuning Advisor) sugere sem
examinar o que é realmente útil para o ambiente. Utilizar o processamento
correto pode salvar algumas horas de sono para nós. O objetivo deste
capítulo é deixar, de uma forma clara e direta, quais são os tipos de
processamentos de dados.

A ideia aqui é ir direto ao ponto, encontrando o que dá pra


processar (e onde é aplicável) e quais os resultados obtidos com cada tipo
de processamento.

PROCESS DEFAULT

Realiza o menor esforço possível (com a menor quantidade de


tarefas) para processar a estrutura e os dados. O servidor converte esta
opção na mais adequada à necessidade do seu ambiente, no momento do
processamento.

Aplicável: Todos Objetos

PROCESS FULL

Processa toda a estrutura e os dados, excluindo e recriando os


objetos. Isso significa que o processamento descarta tudo o que existe,
cria novamente a estrutura analítica e depois processa os dados para esta

MVTech · 173
Do Banco de Dados Relacional à Tomada de Decisão

estrutura. Se algum novo atributo é adicionado à dimensão, você pode


atualizar através de um Process Full.

Aplicável: Todos Objetos

PROCESS UPDATE

Quando acontece alguma alteração de atributos na dimensão, seja


adicionando, removendo ou atualizando, este processo deve ser
executado. Tem inteligência suficiente para processar somente o
diferencial da estrutura e dos dados que são novos, porém é mais lento
para aplicar a “inteligência” do que é o diferencial.

Aplicável: Dimensão

PROCESS DATA

Descarta todos os dados armazenados e processa todos os dados


novamente, ignorando se houve alteração na estrutura e também nos
índices. O foco é somente nos dados.

Aplicável: Dimensão, Cubo, Medida e Partição

PROCESS ADD

Processa somente os novos dados, ignorando os dados que já


existem e também qualquer alteração nova na estrutura ou índices.

Aplicável: Dimensão e Partição

Só pra lembrar onde o processamento é feito dentro do SSDT (SQL


Server Data Tools), vá até o objeto que quer processar, clique com o botão

MVTech · 174
Do Banco de Dados Relacional à Tomada de Decisão

direito e aponte para Process. Quando a tela se abrir, veja na caixa de


seleção as opções de processamento disponíveis para aquele objeto.

MVTech · 175
Do Banco de Dados Relacional à Tomada de Decisão

Depois que já tiver publicado seu projeto, de dentro do SSMS (SQL


Server Management Studio) também é possível processar objetos. Siga o
mesmo processo: botão direito no cubo, aponte para Process e em seguida
escolha o tipo de processamento.

MVTech · 176
Do Banco de Dados Relacional à Tomada de Decisão

Depois de criar, configurar e publicar o cubo, é hora de acessá-lo.


A ferramenta mais completa e amplamente utilizada é o Excel. Todo
tomador de decisão utiliza alguma ferramenta de planilha eletrônica pela
facilidade e familiaridade, para os projetos de Business Intelligence. Eles
seguem a mesma linha. Isso não significa que nenhum relatório deve ser
montado no Reporting Services. Diferente disso, o Reporting Services e o
Excel trabalham juntos para entregar a melhor forma de visualizar a
informação para nossos clientes.

Com base nisso, vamos conectar o Excel no SQL Server Analysis


Services e permitir que todo o potencial de insights sejam gerados a partir
das diversas possibilidades de cruzamento de dados.

Para isso, abra o Excel 2013 e vá até a Ribbon Data, em seguida


procure o item From Other Souces e então, From Analysis Services.

MVTech · 177
Do Banco de Dados Relacional à Tomada de Decisão

Neste momento uma tela para especificar o servidor do SSAS que


possui o cubo é apresentada, solicitando os dados de autenticação.

Ao avançar, na tela seguinte os projetos que estão visíveis ao usuário que


se autenticou são apresentados na lista de seleção e o nome do cubo é
apresentado na área central da tela. Veja o projeto SSAS_PrimeiroCubo
criado nos capítulos anteriores e também o cubo Adventure Works
DW2012.

MVTech · 178
Do Banco de Dados Relacional à Tomada de Decisão

Ao avançar a tela, é possível visualizar algumas configurações que


serão usadas para salvar o arquivo .odc de conexão, permitindo que esta
conexão seja reutilizada no futuro.

MVTech · 179
Do Banco de Dados Relacional à Tomada de Decisão

Ao clicar em Finish, o arquivo da conexão é criado e o Excel


pergunta onde e como os dados serão trabalhados. Como a ideia é
permitir flexibilidade através de tabelas dinâmicas, mantenha selecionado
o item PivotTable Report, pois a partir desta tabela dinâmica é possível
filtrar, cruzar, esconder e gerar gráficos com base nos dados.

MVTech · 180
Do Banco de Dados Relacional à Tomada de Decisão

Ao clicar em OK, a estrutura da tabela dinâmica é criada dentro do


Excel e permite que você faça a manipulação dos dados de forma a
encontrar seu resultado esperado.

MVTech · 181
Do Banco de Dados Relacional à Tomada de Decisão

Estes quatro blocos de interação são responsáveis por permitir o


cruzamento e interação dos dados. Não vou me aprofundar neles, mas dá
pra ter uma ideia do potencial de se trabalhar com este recurso. No
quadrante superior à esquerda são os filtros: neste quadrante são
especificados os itens que filtrarão todo o resultado apresentado na tabela
dinâmica. O quadrante superior direito, chamado Columns, são os dados
das dimensões que quebrarão as measures em colunas. O quadrante
inferior esquerdo, de nome Rows, é o responsável por quebrar os dados

MVTech · 182
Do Banco de Dados Relacional à Tomada de Decisão

das measures em linhas. E por fim, o quadrante inferior direito, Values, é


onde os dados das measures ou KPIs serão exibidos.

Veja um exemplo utilizando os quadrantes:

FILTERS: Order Date = 2007

COLUMNS: Region (Hierarquia criada com o Grupo/País/Região)

VALUES: Measure Sales Amount e KPI Profitability Status

ROWS: Product (Hierarquia criada com a Categoria/Sub-


Categoria/Produto)

O resultado fica assim, na tabela dinâmica

MVTech · 183
Do Banco de Dados Relacional à Tomada de Decisão

E como são dados exibidos no Excel, transformar esta informação


em gráfico é bem tranquilo.

Com toda a flexibilidade do Excel e os dados cruzados no cubo, as


análises dos seus clientes passarão a ter um potencial de decisão com alta
performance.

MVTech · 184
Do Banco de Dados Relacional à Tomada de Decisão

SQL SERVER
REPORTING SERVICES

MVTech · 185
Do Banco de Dados Relacional à Tomada de Decisão

Desde a versão 2008 do SQL Server Reporting Services não é mais


necessário o IIS para publicar os relatórios. Desde então foi criado o
conceito do Reporting Services Configuration Manager, que cria um
WebService no servidor e permite a publicação neste serviço. A ideia deste
capítulo é mostrar o que é preciso fazer para permitir o SSRS publicar os
relatórios em um WebService e então poder consumir os relatórios através
da web.

Com o SSRS 2014 temos uma ferramenta que auxilia a


configuração do deploy do relatórios. Por padrão essa ferramenta fica em
Microsoft SQL Server 2014 >> Configuration Tools >> SQL Server 2014
Reporting Services Configuration Manager”.

MVTech · 186
Do Banco de Dados Relacional à Tomada de Decisão

A primeira tela que ela apresenta é para se conectar ao servidor de


relatórios, o qual também está no meu ambiente de desenvolvimento,
MVS-SQL2014.

MVTech · 187
Do Banco de Dados Relacional à Tomada de Decisão

No menu da esquerda, confirme se a opção está apontando para


o nome do servidor e instância do Reporting Services, então veja na área
central da tela que o serviço está em execução ou parado. No caso do
botão Start estar habilitado, significa que o serviço não está rodando no
momento. Clique em Start e aguarde o serviço ser iniciado.

MVTech · 188
Do Banco de Dados Relacional à Tomada de Decisão

No menu da esquerda, vá até o item Service Account. Nesta tela


você especificará qual usuário vai ser usado pelo sistema para iniciar e
gerenciar o serviço de relatórios. Na primeira combo box, você tem a opção
de escolher entre os Local System (Usuário Local), Network Service (Serviço
de Rede) ou Local Service (Serviço Local). A segunda forma é informar qual
usuário você quer utilizar. Neste caso já foi criado um usuário local
chamado SSAS, então eu recomendo que você crie um usuário e informe
para este campo.

Ao alterar o usuário de gerenciamento do serviço, o Reporting


Services solicita que você faça um backup da chave de criptografia. Escolha
um lugar seguro para armazenar esta chave e também uma senha.
Preencha os campos e clique em OK. Depois de alguns instantes, se tudo
ocorrer bem, as marcações verdes aparecerão na tela de configuração.

MVTech · 189
Do Banco de Dados Relacional à Tomada de Decisão

O item seguinte, Web Service URL, é onde deve-se especificar qual


é a URL do WebService que publicará os relatórios e permitirá consumir
por meio de um navegador. Neste momento, especifica-se qual é o
diretório virtual (caminho lógico que o sistema irá criar para você poder
acessar os relatórios), e qual é a porta (por padrão é a 80). Repare que
quando você altera essas configurações, o link que está abaixo na tela é
modificado. Essa é a URL que você vai acessar seus relatórios. Por padrão
ele sugere o nome da instância do SQL Server Reporting Services para o
nome do diretório virtual e também para a URL do serviço. Um padrão de
mercado é remover o nome da instância do nome do diretório virtual e
seguir somente com a URL contendo o ReportServer. Veja como ficou.

Após fazer a alteração, clique em Apply para que estas


configurações sejam mantidas.

MVTech · 190
Do Banco de Dados Relacional à Tomada de Decisão

A aba seguinte é Database e permite conectar ao banco de dados


específico do Reporting Services. Neste database são armazenadas
informações sobre execuções, quem acessou, quanto tempo demorou, etc.
Informe em qual banco de dados o sistema pode se conectar e qual
usuário ele deve utilizar pra se conectar no banco de dados. Repare que é
um usuário diferente do informado em Service Account. Lá é para acessar
o serviço e aqui é para acessar o banco de dados.

No item Report Manager URL, você informa qual é o nome do


diretório virtual que será criado para você poder acessar o gerenciador de
relatórios. Novamente, repare que são dois links diferentes, então informe
caminhos diferentes. Esse gerenciador lhe permite criar, editar e excluir
relatórios criados no SQL Server Data Tools ou no Report Builder.

As configurações básicas estão completas. Só com essas


configurações realizadas acima, já é possível deixar o SSRS disponível para

MVTech · 191
Do Banco de Dados Relacional à Tomada de Decisão

os deploys de relatórios e também acessível por meio de um WebService


que foi configurado.

Para acessar os relatórios que serão publicados, recupere o link


que foi informado na configuração do Web Service URL. No meu caso,
é: http://mvs-sql2014/ReportServer

Caso tenha problemas de permissão, você verá um erro na tela


com a mensagem

“As permissões concedidas ao usuário


‘<<aqui_vem_o_seu_usuario_escolhido>>’ não são suficientes
para a execução desta operação. (rsAccessDenied)”

Um contorno para esta mensagem é alterar a permissão de usuário


no UAC (User Account Control) para não ser notificado a cada alteração ou
interação do usuário. Acesse o painel de controle, em seguida vá até Users
Accounts. Dentro do usuário vá até Change User Account Control Settings
e modifique a permissão através do slider para o nível mais baixo possível
(Never Notify) e clique em OK.

MVTech · 192
Do Banco de Dados Relacional à Tomada de Decisão

Ao abrir novamente a URL, você não terá mais o problema de


acesso negado para o usuário.

MVTech · 193
Do Banco de Dados Relacional à Tomada de Decisão

Neste momento é possível fazer os deploys de relatórios para este


ambiente que acabou de ser configurado.

MVTech · 194
Do Banco de Dados Relacional à Tomada de Decisão

Depois de configurar o ambiente e permitir que relatórios sejam


publicados e acessados, é hora de começar a criar os relatórios com o SQL
Server Reporting Services. Como nos outros exemplos deste livro, a
primeira coisa a se fazer é acessar o SQL Server Data Tools e então criar o
projeto do tipo Report Server, que está dentro do template de Reporting
Services.

Vou nomear como SSAS_Conexoes, pois este primeiro exemplo


será relacionado às conexões dos relatórios.

Da mesma forma que vimos no SQL Server Integration Services que


podem haver conexões locais e também conexões compartilhadas entre
todos os pacotes, aqui no Reporting Services também existe a mesma
possibilidade. Quando se utiliza uma instrução de conexão ao servidor de
banco de dados compartilhada esta conexão é configurada dentro do
diretório Shared Data Source. Seguindo a mesma lógica, um acesso a
tabelas/views/objetos de um banco de dados, também compartilhado, é
criada dentro do diretório Shared Dataset. Os escopos específicos internos

MVTech · 195
Do Banco de Dados Relacional à Tomada de Decisão

aos relatórios continuam sendo chamados de AD-HOC e possuem suas


utilidades.

Quando se cria um projeto do tipo Report Server no SSDT, os três


diretórios-padrão são criados na Solution Explorer –-> Shared Data
Source / SharedDataset / Reports.

A pasta Shared Data Source é onde se cria a conexão com o


servidor e também ao banco de dados, para posterior utilização em todos
relatórios que utilizem esta mesma origem de dados. O Shared Dataset é
a conexão entre uma origem de dados e um objeto (tabela, stored
procedure, view, etc) do banco de dados. Ela permite que você utilize uma
conexão já existente (Shared Data Source) ou crie uma nova. E por fim a
pasta Reports é onde ficam os seus arquivos .RDL de relatórios.

Para começar o processo de conexões, vá até a pasta Shared Data


Sources, clique com o botão direito e vá em Add New Data Source.

A tela do Wizard vai aparecer e é só você preencher os dados de


conexão ao banco de dados, igual foi feito nas conexões do Integration
Services. Para esta edição, clique no botão Edit que aparece ao lado da

MVTech · 196
Do Banco de Dados Relacional à Tomada de Decisão

caixa que receberá a Connection String. Neste caso, estou conectando ao


Data Warehouse do AdventureWorksDW2012.

Após a conclusão desta conexão à fonte de dados, é só confirmar


e verificar que a conexão compartilhada foi criada na pasta Shared Data
Sources. Agora é hora de fazer a mesma coisa, só que com o Shared
Dataset.

Vá na solution explorer, encontre a pasta Shared Datasets, clique


com o botão direito e vá até o item Add New Dataset. Um outro wizard irá
se abrir e vai te orientar a fazer a chamada do objeto para retornar os
dados para a aplicação.

MVTech · 197
Do Banco de Dados Relacional à Tomada de Decisão

Dê um nome sugestivo para encontrar depois. Neste caso nomeei


como Paises, pois a consulta irá retornar os países existentes na tabela
DimSalesTerritory. Veja a consulta:

select SalesTerritoryCountry from [DimSalesTerritory]

where SalesTerritoryCountry != 'NA'

group by SalesTerritoryCountry

No campo de Data source selecione a conexão compartilhada que


criou no passo anterior. Na opção de Query Type mantive a opção
relacionada à Text e então coloquei o texto da consulta apresentada
algumas linhas acima. Após preencher os dados, é só confirmar e seu
Shared Dataset estará criado.

MVTech · 198
Do Banco de Dados Relacional à Tomada de Decisão

Com esses dois recursos prontos com escopo de projeto, pode-se


criar relatórios e utilizar como origem da informação um Dataset criado
por você ou por outro membro da equipe - podendo ser aplicada
manutenção nessas informações a qualquer momento, sem ter que entrar
em relatório por relatório para fazer isso. Com essas duas opções, você
altera um único lugar e todos os relatórios que utilizam essa conexão
compartilhada para a origem dos dados já serão automaticamente
atualizados.

Outra coisa interessante é que, para alterar o Shared Data


Source ou o Shared Dataset para mudar o ambiente de Desenvolvimento
pra Produção, o processo é simples. Você pode abrir os
arquivos ConexaoGlobal.RDS (Shared Data Source) ou Paises.RSD (Shared
Dataset) que ficam na pasta onde você salvou o projeto.

MVTech · 199
Do Banco de Dados Relacional à Tomada de Decisão

Ambos arquivos são um XML que pode ser alterado e substituído


em seus servidores para que reflitam as alterações sem a necessidade de
recompilar o aplicativo ou refazer o relatório para que a alteração tenha
efeito.

Vejam como é simples e intuitivo o XML do


arquivo ConexaoGlobal.RDS:

<?xml version="1.0" encoding="utf-8"?>

<RptDataSource xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
Name="ConexaoGlobal">

<ConnectionProperties>

<Extension>SQL</Extension>

<ConnectString>Data Source=mvs-sql2014\sql2014;Initial
Catalog=AdventureWorksDW2012</ConnectString>

<Prompt>Specify a user name and password for data source


ConexaoGlobal:</Prompt>

</ConnectionProperties>

<DataSourceID>da89fc59-9397-4b44-ae56-
28fa53279522</DataSourceID>

</RptDataSource>

MVTech · 200
Do Banco de Dados Relacional à Tomada de Decisão

Repare que existe uma TAG chamada ConnectString no centro do


código. Esta TAG representa o caminho do servidor e a instância que será
acessada. Também apresenta o Initial Catalog, que é o banco de dados
que será acessado.

MVTech · 201
Do Banco de Dados Relacional à Tomada de Decisão

Em algumas situações é necessário apresentar dados consolidados


em um relatório de fechamento, com todo o detalhamento. Isso implicaria
no relatório ficar com um tamanho e volume de informação acima do que
caberia em uma página. Para resolver esta necessidade, é possível
contrair/expandir as linhas do relatório como foram feitas nas hierarquias
do Analysis Services e visualizar a informação agrupada (linhas contraídas)
ou então detalhada (linhas expandidas).

Este capítulo é dedicado a ensinar esta técnica.

No capítulo anterior, foi ensinado como criar um Shared Data


Source e um Shared Dataset apontando para o banco de dados
AdventureWorksDW2012 que é do engine relacional. Neste capítulo
também serão criados o Shared Data Source e o Shared Dataset, mas
apontando para o cubo que foi criado na sessão de Analysis Services, para
recuperar o resultado existente na hierarquia de Produtos.

Para começar, crie um novo projeto do tipo Report Server e dê o


nome de SSRS_Hierarquia.

Após a criação, vá até o diretório Shared Data Source na Solutions


Explorer e crie uma nova conexão para o servidor onde está publicado o
cubo.

MVTech · 202
Do Banco de Dados Relacional à Tomada de Decisão

Conclua clicando em OK. Também crie um Shared Data Set para


consultar informações já processadas no cubo. Faça isso clicando com o
botão direito em Shared Data Set e aponte para Add New Dataset. Na
janela que se abre, informe o nome do Dataset no campo name,
lembrando que este é o nome externo, para ser usado em todos os
relatórios que necessitarem. No meu caso, coloquei HierarquiaProduto. Na
lista de seleção Data Source, informe o Data Source que foi criado a pouco.
Eu nomeei como CuboAdventureWorks. No campo Query Type só o Text
está habilitado, mas a edição de texto não, então clique em Query Designer
e arraste a estrutura da consulta como deve ser retornada. Faça isso
expandindo as Measures e arrastando Total Vendas para a área central do
Query Designer.

MVTech · 203
Do Banco de Dados Relacional à Tomada de Decisão

Faça a mesma coisa expandindo a dimensão Produto e arrastando


a hierarquia Produtos para o lado esquerdo da measure que foi adicionada
no Query Designer.

Repare que, ao posicionar a hierarquia Produtos ao lado da


measure, uma linha azul marinho fica destacada. Esta linha informa onde

MVTech · 204
Do Banco de Dados Relacional à Tomada de Decisão

os valores daquele atributo serão posicionados. Após arrastar a hierarquia,


será possível ver os dados como estarão.

Ao final, retorne à tela anterior clicando em OK.

Repare que o código em MDX foi impresso no campo Text do


Query Type.

MVTech · 205
Do Banco de Dados Relacional à Tomada de Decisão

E o código MDX escrito é este abaixo:

SELECT NON EMPTY { [Measures].[Sales Amount] } ON COLUMNS, NON


EMPTY { ([Dim Product].[Products].[English Product
Name].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION,
MEMBER_UNIQUE_NAME ON ROWS FROM [Adventure Works DW2012] CELL
PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE,
FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS

Após a criação das conexões, é necessário criar o relatório que


receberá os dados retornados da consulta. Para isso, clique com o botão
direto do mouse em Reports, aponte para Add e então clique em New Item.

MVTech · 206
Do Banco de Dados Relacional à Tomada de Decisão

Na tela que se abre, garanta que selecionou o objeto Report e o


renomeie como VendasPorProduto.rdl, e clique em Add.

Automaticamente a área de design do relatório se abre,


permitindo que seja trabalhado. Até este momento não existe nenhuma
origem de dados atrelada a este relatório. Para fazer esta associação, vá
até o menu Report Data. Caso não o encontre, acesse o menu View e em
seguida vá até Report Data, ou então, através do atalho Ctrl+Alt+D.

MVTech · 207
Do Banco de Dados Relacional à Tomada de Decisão

Ao chegar ao menu Report Data, procure a opção Datasets, clique


com o botão direito e aponte para Add Dataset.

Na tela que se abre, existe a opção de usar um Shared Dataset ou


então fazer uma conexão interna a este relatório. Neste caso, já existe a
conexão compartilhada, então a opção Use shared dataset deve ficar
selecionada nas opções. O campo name é o nome interno do Dataset no
relatório - isso porque é possível adicionar mais de uma origem de dados
ao mesmo relatório. Nomeie o dataset interno como ProdutoInterno,
selecione qual Shared Dataset será utilizado e clique em OK.

MVTech · 208
Do Banco de Dados Relacional à Tomada de Decisão

Repare que no item Datasets do menu Report Data, existe um


dataset com o nome interno que foi criado a pouco e os campos que foram
criados no dataset compartilhado.

MVTech · 209
Do Banco de Dados Relacional à Tomada de Decisão

Voltando ao relatório, abra a Toolbox (caixa de ferramentas) do


Reporting Services e arraste o item Table para a área de design do relatório.

Este componente de tela fornece uma tabela com linhas e colunas


convencional. Reparem que existe um facilitador para preencher os
campos, onde a linha de Data representa os dados e a linha de Header
representa os cabeçalhos. Passe o mouse sobre a primeira coluna e veja
que um ícone aparece.

MVTech · 210
Do Banco de Dados Relacional à Tomada de Decisão

Este ícone representa uma lista de campos. Ao clicar, veja que os


campos adicionados ao Dataset interno são apresentados.

Selecione o campo Categoria_Produto nesta célula. Faça a mesma


coisa nas células seguintes, incluindo respectivamente,
SubCategoria_Produto e Nome_do_Produto.

Por padrão são adicionados apenas três colunas na tabela, para


adicionar uma nova. Clique com o botão direto na terceira coluna, aponte
o mouse para Insert Column e então clique em Right.

MVTech · 211
Do Banco de Dados Relacional à Tomada de Decisão

Estes passos vão incluir uma nova coluna à direita da coluna


selecionada. Se fosse o caso de incluir uma nova coluna entre Sub-
Categoria e Produto, poderia clicar em Left (esquerda) ou invés de Right
(direita). Isso incluiria a nova coluna no lado informado. Após incluir a nova
coluna, faça o mesmo processo e adicione o item Total_Vendas.

Clicando no botão de Preview, ao lado do botão de Design da área


de modelagem do relatório, o Reporting Services se conecta ao banco e
retorna os dados reais que estão sendo consumidos.

MVTech · 212
Do Banco de Dados Relacional à Tomada de Decisão

Veja que neste momento os dados são apresentados sem


formatação e, menos ainda, organizados em hierarquias.

Para resolver o problema da hierarquia, deve-se agrupar os dados


por Categorias, resultando na diminuição do tamanho final do relatório.

Para isso, volte à área de design do relatório, clique com o botão


direito na célula do campo SubCategoria, aponte para Add Group e em
seguida Parent Group relacionado ao segmento de Row Group.

MVTech · 213
Do Banco de Dados Relacional à Tomada de Decisão

Uma caixa de diálogo é apresentada, solicitando que informe qual


deve ser o campo que agrupará os dados. Nesta caixa,
selecione Categoria_Produto e clique em OK.

MVTech · 214
Do Banco de Dados Relacional à Tomada de Decisão

Com isso, o campo Categoria_Produto é adicionado à tabela de


dados, mas ainda não diminui o tamanho do relatório. Se visualizar o
resultado através do botão Preview, o tamanho ainda será o mesmo. A
única diferença é que os dados de Categorias não estão se repetindo,
estão apenas agrupados.

Para de fato criar a hierarquia e a possiblidade de expandir e


contrair o resultado, vá até a área Row Groups (na área central inferior da
tela de detalhes), clique com o botão direito em Details e em
seguida Group Properties.

MVTech · 215
Do Banco de Dados Relacional à Tomada de Decisão

Após a caixa de diálogo se abrir, vá até a opção Visibility no menu


da esquerda, então selecione Hide na sessão When the report is initially
run, também marque a caixa de seleção do Display can be toggled by this
report item e então selecione o campo Categoria_Produto1 na lista de
seleção. Em seguida clique em OK.

Isso realmente fará com que os dados baseados da


Categoria_Produto comprima os dados de SubCategoria referentes à
aquela Categoria e permite que o relatório fique menor. Porém, se você
quiser visualizar os dados das Subcategorias específicas, basta expandir

clicando no ícone de + e, se quiser retrair, basta clicar no ícone de -.

MVTech · 216
Do Banco de Dados Relacional à Tomada de Decisão

Após a criação da nova Categoria_Produto1 que agrupou os


resultados, ficaram visíveis no relatório duas colunas de Categoria. Para
remover a categoria antiga, volte à área de design, clique com o botão
direito na coluna e aponte para Column Visibility.

Na janela que se abriu, selecione o Hide na opção já conhecida,


When the report is initially run.

MVTech · 217
Do Banco de Dados Relacional à Tomada de Decisão

Fazendo isso, esta coluna será ocultada na hora da apresentação


do relatório para o usuário. Confirme como ficou o relatório, clicando em
Preview novamente.

MVTech · 218
Do Banco de Dados Relacional à Tomada de Decisão

Explore a formatação de tamanho, cores de células e cores de


texto. Com certeza isto vai melhorar a aparência do seu relatório. Para
facilitar, veja o menu de edição do Reporting Services.

MVTech · 219
Do Banco de Dados Relacional à Tomada de Decisão

As páginas contendo linhas com cores alternadas foram


introduzidas nos relatórios gigantescos que eram gerados por impressoras
matriciais. Eram folhas e mais folhas de formulário contínuo, repletos de
números que dificultavam o acompanhamento do dado no decorrer da
linha. Quando as folhas zebradas surgiram, os analistas de negócios da
época conseguiram melhorar as análises simplesmente porque era
possível acompanhar o dado do começo da linha até o final, sem a
necessidade de nenhum instrumento extra (como uma régua, por
exemplo).

No Reporting Services também é possível criar este recurso de


linhas zebradas - e isso é mais comum do que se imagina. Vários cliente
que visitei utilizam esta forma de relatório até hoje para mostrar as
informações necessárias. A proposta deste capítulo é mostrar um exemplo
de como fazer um desses relatórios em formato de tabela (linha e coluna),
e como “zebrar” o resultado (deixar uma linha de cada cor
alternadamente).

Para isso, abra novamente o relatório criado no capítulo anterior


com a hierarquia dos produtos consumindo através do Analysis Services.

Reparem que o relatório ainda está sem formatação. Todas as


informações estão chapadas em branco e preto. Como sugerido no final
do capítulo anterior, vamos fazer algumas modificações para deixar o
relatório mais atrativo aos olhos do cliente.

A primeira coisa é alterar o fundo do cabeçalho. Para isso, vá até a


tabela e clique na coluna à esquerda da linha do cabeçalho.

MVTech · 220
Do Banco de Dados Relacional à Tomada de Decisão

Quando ela ficar selecionada, vá até o item Background Color e


selecione a cor de sua preferência. No meu caso, coloquei Azul
(CornerFlower Blue).

Outra coisa que você pode fazer é alterar o tamanho das colunas.
Para isso, clique na tabela e vá até a linha divisória das colunas na primeira
linha.

Depois de formatar da forma que é melhor para seu relatório, é


hora de criar o efeito “zebra” no resultado.

Seguindo a mesma lógica de colorir o cabeçalho, deve-se


selecionar a linha de dados e novamente apontar o mouse para
Background Color.

MVTech · 221
Do Banco de Dados Relacional à Tomada de Decisão

Lembrem-se que, ao invés de escolher a cor propriamente dita, nós


queremos fazer linhas com cores intercaladas. Para isso, ao invés de
selecionar a cor, será necessário escrever uma expressão em Visual Basic.

No botão [fx] da caixa de seleção de cores, você pode inserir uma


fórmula. Clique neste botão.

Ao abrir a janela, informe o código abaixo:

=iif(RowNumber(Nothing) mod 2,"White", "LightSteelBlue")

Informando que a primeira linha do relatório é Branca (White), e a


segunda é um azul mais claro que o do cabeçalho (LightSteelBlue). Caso
queira, você pode selecionar outras cores a sua escolha. Basta alterar no
código a cor de sua preferência, clicando sobre a cor na paleta de cores,
na hora de escrever o código. É importante que você tenha apagado o

MVTech · 222
Do Banco de Dados Relacional à Tomada de Decisão

nome da cor anterior, para que não dê erro na hora de inserir o novo nome
de cor.

Confirme até voltar à tela principal e clique novamente no botão


Preview para verificar como ficou o relatório.

MVTech · 223
Do Banco de Dados Relacional à Tomada de Decisão

Seguindo esta mesma lógica para zebrar a linha, é possível aplicar


outra fórmula simples para mudar a cor do texto em determinadas linhas.
Vou seguir a seguinte regra: se o Total de Vendas for acima de 50.000,
então a cor do texto será Azul; se for abaixo deste valor, a cor do texto
será Vermelha.

A formula colocada na cor do texto é essa:

=IIF( Fields!Total_Vendas.Value > 50000,"Blue","Red")

Apesar do valor do Total Vendas representar um valor monetário,


não é como está formatado. Para alterar a forma visual da apresentação
do dado, volte à edição do relatório e então clique com o botão direito do
mouse na célula do Total_Vendas e aponte o mouse para Text Box
Properties.

MVTech · 224
Do Banco de Dados Relacional à Tomada de Decisão

Nesta tela de formatação, procure no menu da esquerda o item


Number, em seguida selecione Currency na lista Category e formate de
acordo com sua preferência.

MVTech · 225
Do Banco de Dados Relacional à Tomada de Decisão

Clique em OK para voltar à tela de edição do relatório e, mais uma


vez, clique no botão Preview para ver como ficou.

MVTech · 226
Do Banco de Dados Relacional à Tomada de Decisão

O resultado da formatação apresentou fundo das linhas zebradas,


cor do texto baseado em uma regra de negócios e formatação de célula
para adequar a apresentação do dado ao seu significado.

MVTech · 227
Do Banco de Dados Relacional à Tomada de Decisão

Como o ambiente já está configurado para receber as publicações


de relatórios e já foi criado um relatório que acessa os dados do cubo
Adventure Works DW2012, é hora de juntar estes passos para publicar o
relatório e deixá-lo disponível para os usuários.

Abra o relatório zebrado que foi criado no capítulo anterior, vá até


a Solution Explorer, clique com o botão direito do mouse e aponte para
Properties.

MVTech · 228
Do Banco de Dados Relacional à Tomada de Decisão

Diversas configurações sobre a publicação são apresentadas na


tela que se abre. Vejamos em detalhes:

OverwriteDatasets: Sobrescreve o dataset, com base no que está


desenvolvido no SQL Server Data Tools. Caso alguma alteração no arquivo
tenha sido feita diretamente no arquivo através do WebService, esta
alteração será perdida.

OverwriteDataSource: Sobrescreve o data source e segue a


mesma explicação do OverwriteDatasets.

TargetDatasetFolder: É o diretório dentro da estrutura do


WebService que será publicado o Shared Dataset desenvolvido. Pode
inferir caminho com mais de um nível de profundidade.

TargetDataSourceFolder. É o diretório para a publicação do


Shared Data Source e segue a mesma explicação do TargetDatasetFolder.

TargetReportFolder: É o diretório para a publicação do Relatório


e segue a mesma explicação do TargetDatasetFolder e
TargetDataSourceFolder. Por padrão vem o nome do projeto, pois podem
existir diversos relatórios dentro de um projeto.

TargetReportPartFolder: É o diretório para a publicação de partes


reutilizáveis do Relatório e segue a mesma explicação do
TargetDatasetFolder, TargetDataSourceFolder e TargetReportFolder. Por
padrão vem vazio.

MVTech · 229
Do Banco de Dados Relacional à Tomada de Decisão

TargetServerURL: Esta configuração pode ser considerada a mais


importante, visto que é o caminho do servidor que foi configurado e
permite o acesso ao serviço de relatórios do Reporting Services. Caso não
lembre o caminho do seu servidor, acesse novamente o SQL Server 2014
Reporting Services Configuration Manager, vá até o menu lateral esquerdo
Web Service URL, e veja qual é a URL configurada.

TargetServerVersion: É uma lista de seleção que deve ser


informada a versão do ambiente do Reporting Services, não a versão em
que foi desenvolvido o relatório.

Ao término da configuração, confirme clicando em OK. Ao voltar à


tela principal, novamente vá até a Solution Explorer, clique com o botão
direito e aponte para Deploy.

MVTech · 230
Do Banco de Dados Relacional à Tomada de Decisão

Durante o processo de publicação, uma lista com as ações é


apresentada na parte inferior do SQL Server Data Tools e permite o
acompanhamento do que está sendo executado pelo servidor. No final, se
tudo ocorreu bem, o SSDT apresenta o caminho a ser acessado para
visualizar o relatório.

MVTech · 231
Do Banco de Dados Relacional à Tomada de Decisão

Ao acessar o caminho do Reporting Services, será possível ver a


pasta Produtos, que acabou de ser publicada. Dentro desta pasta existem
as outras, que foram transformadas em subpastas pela configuração da
publicação do projeto. Acesse a pasta Produtos, em seguida vá até Reports
e por fim acesse VendasPorProduto.

Ao clicar no link do VendasPorProduto, o relatório fará todo o


caminho para ler os dados no cubo processado e apresentará o resultado
na tela conforme foi desenvolvido no capítulo anterior.

MVTech · 232
Do Banco de Dados Relacional à Tomada de Decisão

MVTech · 233
Do Banco de Dados Relacional à Tomada de Decisão

Nem sempre os gestores estão esperando os resultados


detalhados para tomar alguma decisão, em alguns casos analisam
simplesmente um ponteiro que apresenta a saúde de um produto,
segmento, ou informação consolidada da empresa inteira. Estes ponteiros
podem ser representados em diversos formatos através de Gauges nativos
do Reporting Services.

O Gauge é utilizado para mostrar a informação baseada em


performance. Em outras palavras, você consegue plotar a informação
sumarizada em um indicador que auxilia o tomador de decisão a verificar
se a sua informação está saudável ou não.

Abaixo estão alguns exemplos de Gauges (sem formatação) que o


SSRS nos possibilita utilizar.

Este capítulo é focado em criar um Gauge para apresentar o total


de vendas da empresa no segmento Vestuário (Clothing). Para isso, crie
um novo projeto do tipo Report Server, também crie um Shared Data

MVTech · 234
Do Banco de Dados Relacional à Tomada de Decisão

Source apontando para o servidor do Analysis Services que posusi o cubo


publicado. Também crie um Shared Dataset com filtro. Para este caso,
clique com o botão direito em Shared Dataset e aponte para Add New
Dataset.

Na Janela que se abre, como no capítulo passado, escolha o Shared


Data Source que aponta para o cubo, e clique em Query Designer para
montar o texto que recupera os dados que serão plotados no gráfico. A
diferença deste Dataset é que somente o segmento Vestuário é necessário
para gerar o Gauge, então é preciso criar um filtro na consulta. Veja a área
superior no Query Designer, nesta área é possível configurar o filtro. Após
inserir a measure de Total Vendas e o atributo Categoria Produto da
dimensão Produto, é necessário criar um filtro para remover as outra
categorias do resultado.

Ao clicar na célula <Select dimension> uma lista com as


dimensões é apresentada, então selecione Produto. Na sequência, na
célula Hierarchy selecione Categoria Produto, na célula de Operator
selecione Equal e por fim, na célula de Filter Expression, escolha o membro
Clothing.

MVTech · 235
Do Banco de Dados Relacional à Tomada de Decisão

Ao clicar em OK, somente o resultado da categoria Clothing se


manterá como origem dos dados. Confirme para voltar à tela anterior.

MVTech · 236
Do Banco de Dados Relacional à Tomada de Decisão

Repare que existe uma instrução com o filtro no código ON ROWS


FROM que recupera somente o resultado que seja verdadeiro nesta
condição.

SELECT NON EMPTY { [Measures].[Sales Amount] } ON COLUMNS, NON


EMPTY { ([Dim Product].[English Product Category
Name].[English Product Category Name].ALLMEMBERS ) } DIMENSION
PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM
( SELECT ( { [Dim Product].[English Product Category
Name].&[Clothing] } ) ON COLUMNS FROM [Adventure Works
DW2012]) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR,
FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE,
FONT_FLAGS

MVTech · 237
Do Banco de Dados Relacional à Tomada de Decisão

Após confirmar e criar o Shared Dataset, é preciso criar o relatório


que receberá o Gauge. Crie um novo relatório e nomeie como
IndicadoresDeVendas

Arraste o controle de Gauge para o relatório, como fez


anteriormente com o controle Tabela. Ao arrastar a tela que se abre
permite escolher o tipo do Gauge que será utilizado no relatório. O
primeiro Gauge que está na imagem do início do capítulo é o mesmo que
está selecionado na imagem abaixo, chama-se 180 Degress North.

MVTech · 238
Do Banco de Dados Relacional à Tomada de Decisão

Após selecionar qual Gauge será utilizado, clique em Ok e


aparecerá a tela para você informar qual será o DataSet que você quer
utilizar para fazer a busca dos dados. Você já criou o seu Shared Dataset
de Vestuario, então é só selecionar na lista e clicar novamente em OK.

MVTech · 239
Do Banco de Dados Relacional à Tomada de Decisão

Neste momento o gauge é plotado no relatório mas não está


configurado. Está apenas apresentado e com acesso à informações de
Vestuário. Para apresentar o dado corretamente, é preciso configurar qual
será a informação sumarizada que o ponteiro utilizará para plotar no
gráfico. Para isso, clique no Gauge e espere a janela do SmartTag Gauge
Data se abrir, vá até o item (Unspecified) e selecione o Total_Vendas.

Com isso, seu Gauge já está configurado para mostrar a


informação de total que vem da sua base de dados. Porém, se clicar em
Preview para visualizar o resultado, o Gauge estará apontando para 100
que é o limite máximo padrão do ponteiro do gauge.

MVTech · 240
Do Banco de Dados Relacional à Tomada de Decisão

Para alterar essas configurações básicas do Gauge e criar os


intervalos que representarão a performance de suas vendas (esse exemplo
é baseado no Total de Vendas de Vestuário).

Como estamos falando em performance de vendas, normalmente


existe um planejamento que defini um valor que seja satisfatório para
medir a performance para aquele ano, ou período. Digamos que o
planejamento total para Vestuário seja de 400.000,00 (quatrocentos mil).
Para isso clique novamente no Gauge e aperte a tecla F4, a aba de
propriedades será aberta, vá até a coleção Scales. Com a janela
do Scales aberta para edição, procure e altere a
propriedade MaximumValue para o valor 400000 (quatrocentos mil).

MVTech · 241
Do Banco de Dados Relacional à Tomada de Decisão

A coleção de Scales permite configurar toda a informação da


escala que o Gauge irá mostrar, sendo possível definir qual é o valor
mínimo, o valor máximo, se ele vai mostrar o valor ou não, de quanto em
quanto é o intervalo a ser mostrado, entre outras configurações.

Ainda dentro da configuração de Scales, procure a coleção Ranges.

A tela de Ranges permite criar intervalos para mostrar no Gauge e


o gestor terá a possibilidade de fazer as análises visualmente, esta é a
cereja do bolo! Neste exemplo os intervalos serão criados para apresentar
3 Ranges de performance. O primeiro no intervalo de 0 até 300000, que
será um péssimo resultado. O segundo intervalo será 300001 até 350000
e apresenta um resultado intermediário. O terceiro intervalo é o que é
considerado satisfatório e cobre de 350001 até 400000.

Dentro da janela de Scales, já existe um Range criado. Pode-se


alterar as propriedades deste range para suprir um dos intervalos que
serão criados. Altere as propriedades:

MVTech · 242
Do Banco de Dados Relacional à Tomada de Decisão

Name: DesempenhoBaixo

StartValue: 0

EndValue: 300000

FillGradienteEndColor: Selecione a cor Vermelho.

MVTech · 243
Do Banco de Dados Relacional à Tomada de Decisão

Agora é necessário inserir mais 2 intervalos, para isso, clique no


botão Add na parte inferior da tela.

Configure o intervalo que foi criado, modificando as propriedades:

Name: DesempenhoMedio

StartValue: 300001

EndValue: 350000

FillGradienteEndColor: Selecione a cor Amarelo.

Faça isso a terceira vez, mas informe as seguintes propriedades:

Name: DesempenhoPositivo

StartValue: 350001

EndValue: 400000

FillGradienteEndColor: Selecione a cor Verde.

MVTech · 244
Do Banco de Dados Relacional à Tomada de Decisão

Após as configurações, confirme em OK até voltar à tela inicial. Os


intervalos numéricos estão se sobrepondo e atrapalhando a visualização
da informação. Para remover os números, acesse novamente as
propriedades do Gauge, vá até a propriedade Label e altere a configuração
de Hidden para True.

Com esta alteração, o Gauge não irá plotar os números do


intervalo. Seu gestor terá acesso à um resultado que aponta para o sucesso
ou a falha do resultado que está analisando, simplesmente tendo a
resposta visual.

MVTech · 245
Do Banco de Dados Relacional à Tomada de Decisão

Para replicar as configurações nos outros tipos de Gauges


existentes no Reporting Services é a mesma coisa, basta configurar o Scale
e o Range adequar ao que melhor se encaixa para o relatório ou
dashboard que está sendo desenvolvido.

Veja alguns exemplos desses dados plotados em outros Gauges.

MVTech · 246
Do Banco de Dados Relacional à Tomada de Decisão

No capítulo anterior o valor máximo do Gauge foi colocado


manualmente mas isso nem sempre pode ser útil. Cada vez que este valor
for atualizado, o relatório precisa ser modificado e publicado novamente.
Para resolver este problema, pode-se utilizar o valor retornado de um
Dataset, variável ou expressão, e o configurar o valor máximo do Gauge
com base neste retorno. A proposta deste capítulo é ensinar esta
configuração. Também será ensinado com incluir mais de um Dataset em
um único relatório.

Para começar, abra novamente o projeto de relatório do Gauge


criado no capítulo anterior. Vá até a Solution Explorer, clique com o botão
direito em Shared Datasets e aponte para Add New Dataset.

Nomeie o Dataset como ValorMaximoGauge, mantenha


selecionado o Shared Data Source CuboAdventureWorks, e clique mais
uma vez em Query Designer.

Repita os passos anteriores pra criar o filtro, mas desta vez, faça a
seleção no Filter Expression para o total de vendas do membro Accessories
e não Clothing. Isso é só um exemplo, para simular o planejamento do que
deveria ter sido vendido.

MVTech · 247
Do Banco de Dados Relacional à Tomada de Decisão

Clique em OK e verifique que o Total Vendas está na casa dos 700


mil. Clique em OK novamente e volte para a tela inicial do Dataset.

MVTech · 248
Do Banco de Dados Relacional à Tomada de Decisão

SELECT NON EMPTY { [Measures].[Sales Amount] } ON COLUMNS FROM


( SELECT ( { [Dim Product].[English Product Category
Name].&[Accessories] } ) ON COLUMNS FROM [Adventure Works
DW2012]) WHERE ( [Dim Product].[English Product Category
Name].&[Accessories] ) CELL PROPERTIES VALUE, BACK_COLOR,
FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME,
FONT_SIZE, FONT_FLAGS

Ao concluir, mais um Shared Dataset está criado no projeto, e


pronto para adicionado ao relatório. Em um capítulo anterior foi dito de
adicionar mais de um Dataset em um relatório, isso será feito agora. Para
isso, abra novamente a opção de Report Data, se não estiver visualizando,
acesse através do atalho CTRL+ALT+D.

MVTech · 249
Do Banco de Dados Relacional à Tomada de Decisão

Nesta tela, vá até o item Datasets, clique com o botão direto e


aponte para Add Dataset.

Na tela que se abre, preencha o campo Name com TotalPlanejado,


mantenha marcado a opção Use a shared dataset e selecione o Shared
Dataset com o nome ValorMaximoGauge. Clique em Ok pra confirmar e
voltar ao relatório.

MVTech · 250
Do Banco de Dados Relacional à Tomada de Decisão

Após concluir, repare que o relatório está habilitado para trabalhar


com mais de um Dataset.

Voltando à edição do Gauge, selecione novamente o indicador e


vá até a coleção da propriedade Scale por mais uma vez. No capítulo
anterior foi configurado manualmente o valor de 400.000 como o
MaximumValue desta coleção. Porém, agora existe um valor retornado do
banco de dados, que é o responsável por manter este número variável, e
de acordo com a informação do planejamento. Para isso, clique em
<Expression...> na caixa de seleção da propriedade MaximumValue.

MVTech · 251
Do Banco de Dados Relacional à Tomada de Decisão

Na tela de expressão, que já lhe foi apresentada ao trabalhar com


linhas zebradas no relatório, é possível retornar os valores de um dataset.
Para isso, clique em Dataset na coluna da esquerda (Category), em seguida
escolha de qual dataset é a informação que será retornada na coluna
central (Item) e por fim na coluna da direita (Values) clique duas vezes em
Sum(Total_Vendas).

MVTech · 252
Do Banco de Dados Relacional à Tomada de Decisão

Veja que onde estava 400000 na expressão, se transformou no


código:

=Sum(Fields!Total_Vendas.Value, "TotalPlanejado")

Confirme no botão OK até voltar ao relatório. Ao clicar no botão


Preview para verificar como está o relatório, veja que o valor máximo está

MVTech · 253
Do Banco de Dados Relacional à Tomada de Decisão

na casa dos 700 mil, conforme é o resultado do Sum(Total_Vendas)


informado.

Esta mudança no valor máximo fez com que os ranges de cores


fossem impactados, mantendo o valor fixo informado no capítulo anterior.
Para resolver este problema também é possível trabalhar com expressões
para formatar os valores dos intervalos. Para isso, abra novamente a
coleção Scale do Gauge, e procure a coleção Range na janela de
configuração do Scale.

Da mesma forma que o valor máximo do Gauge foi criado, é


preciso trabalhar com uma expressão nos valores dos Ranges. Selecione o
range com nome DesempenhoBaixo, vá até a propriedade EndValue e
selecione <Expression...> na lista de seleção.

MVTech · 254
Do Banco de Dados Relacional à Tomada de Decisão

Não é necessário alterar o valor de StartValue pois este já é o


menor desempenho, e o menor desempenho nunca será negativo. Então
manter o valor zero é suficiente. Suponhamos que o intervalo para um
desempenho baixo seja entre 0 e 70% do valor planejado. Com base nesta
informação, pode-se dividir o valor total planejado por 10 e então
multiplica-lo por 7. Esta formula resultará no valor de 70% a ser usado no
EndValue deste intervalo.

A formula ficaria assim:

MVTech · 255
Do Banco de Dados Relacional à Tomada de Decisão

= ( (Sum(Fields!Total_Vendas.Value,
"ResultadoDeVestuario")/10) *7)

Confirme no botão OK e volte para a tela de configuração dos


Ranges. No intervalo de nome DesempenhoMedio, o valor inicial deve ser
idêntico ao valor final do primeiro intervalo. Para isso, faça a mesma
expressão utilizada no EndValue do intervalo anterior na expressão
StartValue deste intervalo. Para informar que um resultado intermediário
é entre 70 e 90%, é necessário informar ao campo EndValue do segundo
intervalo a formula abaixo:

= ( (Sum(Fields!Total_Vendas.Value,
"ResultadoDeVestuario")/10) *9)

Esta formula também é utilizada como StartValue do range relativo


ao DesempenhoPositivo. E a expressão do EndValue deste range será o
valor sem cálculos de divisão e multiplicação, pois ele já é o valor total,
ficando assim:

=Sum(Fields!Total_Vendas.Value, "TotalPlanejado")

Confirme clicando no botão OK até voltar à tela de edição do


relatório e então clique no botão Preview e repare que os valores dos
ranges estão contemplando 100% do intervalo do Gauge.

MVTech · 256
Do Banco de Dados Relacional à Tomada de Decisão

MVTech · 257
Do Banco de Dados Relacional à Tomada de Decisão

Da mesma forma que é possível parametrizar o valor máximo de


um Gauge, também é possível trabalhar com mais de um ponteiro em um
único Gauge e comparar o desempenho dos dois indicadores.

Esta é a proposta deste capítulo, continuar trabalhando com o


Gauge e permitir analisar e comparar o desempenho de dois valores entre
si.

Para isso, abra novamente o projeto do Reporting Services que foi


alterado no capítulo anterior. A proposta é adicionar mais um Shared
Dataset filtrando pelo mesmo membro Clothing do capítulo de criação do
Gauge, mas a measure neste caso é a Impostos.

Com isso, é possível comparar o total de vendas da categoria


Vestuário com o total de impostos que foram pagos nesta categoria.

MVTech · 258
Do Banco de Dados Relacional à Tomada de Decisão

Com o código:

SELECT NON EMPTY { [Measures].[Tax Amt] } ON COLUMNS FROM


( SELECT ( { [Dim Product].[English Product Category
Name].&[Clothing] } ) ON COLUMNS FROM [Adventure Works
DW2012]) WHERE ( [Dim Product].[English Product Category
Name].&[Clothing] ) CELL PROPERTIES VALUE, BACK_COLOR,
FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME,
FONT_SIZE, FONT_FLAGS

Confirme clicando em OK até voltar à tela inicial. Neste momento


é hora de adicionar mais um Dataset ao relatório, abra o menu Report
Data, clique com o botão direito do mouse em Datasets e aponte para Add

MVTech · 259
Do Banco de Dados Relacional à Tomada de Decisão

Dataset. Na tela de configuração, inclua este novo Dataset com o nome


do ImpostosVesturario no seu relatório.

Veja que agora existem três Datasets no relatório:

MVTech · 260
Do Banco de Dados Relacional à Tomada de Decisão

Para adicionar o segundo indicador no Gauge, clique com o botão


direito no Gauge e aponte para Add Pointer.

Neste momento, mais um ponteiro estará disponível no Gauge e


na Smart Screen do Gauge Data. Selecione a opção Expression do segundo
ponteiro.

MVTech · 261
Do Banco de Dados Relacional à Tomada de Decisão

Nesta expressão, selecione o item Dataset na coluna da esquerda


(Category), clique no Dataset ImpostoVestuario na coluna central (Item) e
por fim dê dois cliques em Sum(Impostos) na coluna da direita (Values).
Com isso, o campo expression é preenchido com o valor correto.

MVTech · 262
Do Banco de Dados Relacional à Tomada de Decisão

Clique em Ok até voltar à tela de edição do Relatório. Ao clicar no


botão Preview, é possível comparar o resultado de ambos ponteiros.

MVTech · 263
Do Banco de Dados Relacional à Tomada de Decisão

Ambos ponteiros estão na cor amarelo, dificultando saber o que é


Venda e o que é Imposto. Para diferencia-los, sugiro colocar o indicador
de imposto com o ponteiro vermelho e o ponteiro de vendas na cor verde,
assim, é possível saber o que é entrada de dinheiro e o que é saída de
dinheiro.

Para isso, clique em um dos ponteiros e veja o nome nas


propriedades. Seguindo a lógica de criação do ponteiro, o primeiro é da
venda e o segundo é do imposto. Selecione o primeiro ponteiro e altere a
propriedade FillGradientEndColor de Orange para Green. Faça a mesma
coisa com o segundo ponteiro, alterando de Orange para Red.

MVTech · 264
Do Banco de Dados Relacional à Tomada de Decisão

Após a mudança, é possível identificar no Gauge o que é cada


ponteiro.

MVTech · 265
Do Banco de Dados Relacional à Tomada de Decisão

Por conceito, DrillDown é partir de uma informação mais ampla


(sumarizada) para uma mais específica (detalhada). A imagem abaixo
ajuda a explicar o conceito. Este tipo de detalhe poderia ser analisado
utilizando Data Mining, mas nada sobre Data Mining será coberto neste
livro.

Repare que a imagem se inicia com as informações mais macro,


contendo o nosso universo muito amplo (Participantes). Quando se desce
um nível a partir deste box é possível encontrar quais grupos de
informações compuseram o item anterior, estas informações mais
detalhadas (no caso deste exemplo) são Homem e Mulher. A partir deste
nível atual é possível especializar mais a informação, neste caso da Figura,
a entidade Mulher é composta por outras três
entidades Loira, Morena e Ruiva, que por sua vez, as informações da
entidade Loira são compostas por separações de idades.

Se for necessário detalhar ainda mais a questão de idade, pode por


exemplo, abrir a derivação de Entre 18 e 65 anos e verificar o grau de
instrução escolar. Quando você seleciona por exemplo, o Doutorado desta
árvore que foi aberta, o seu universo estatístico é 5 níveis mais detalhado
do que o inicial, permitindo que sua análise seja focada

MVTech · 266
Do Banco de Dados Relacional à Tomada de Decisão

em PARTICIPANTES >> MULHERES >> LOIRAS >> ENTRE 18 E 65


ANOS >> DOUTORAS.

A mineração dos dados pode ocorrer até você encontrar o grupo


ideal para fazer sua análise, ou no máximo, até chegar em um único item
de resultado.

Com base nesta explicação rápida sobre DrillDown, o propósito


deste capítulo é montar um exemplo de vendas da empresa Adventure
Works, e a partir do total de vendas de um País chegar ao detalhe do total
de vendas das Cidades. Outra novidade que será utilizada neste capítulo é
o acesso à Stored Procedures e também movimentação de valores entre
os relatórios. Para exemplificar no ambiente AdventureWorkDW2012,
foram criadas duas Stored Procedures com o código abaixo:

CREATE PROC ContinenteVendas

AS (

SELECT D.SalesTerritoryGroup, SUM(F.SalesAmount) Total

FROM [dbo].[FactInternetSales] F

INNER JOIN [DimSalesTerritory] D

ON F.SalesTerritoryKey = D.SalesTerritoryKey

GROUP BY D.SalesTerritoryGroup )

GO

CREATE PROC PaisesVendas (@continente VARCHAR(15))

MVTech · 267
Do Banco de Dados Relacional à Tomada de Decisão

AS (

SELECT D.SalesTerritoryCountry, SUM(F.SalesAmount) Total

FROM [dbo].[FactInternetSales] F

INNER JOIN [DimSalesTerritory] D ON F.SalesTerritoryKey =


D.SalesTerritoryKey

WHERE D.SalesTerritoryGroup = @continente

GROUP BY D.SalesTerritoryCountry )

Após criar ambas Stored Procedures no ambiente relacional do


Data Warehouse, deve-se abrir o SSDT e criar um projeto do tipo Report
Server. Nomeie como SSRS_DetalheDeVendas. Após iniciar o projeto, crie
uma Shared Data Source apontando para o Data Warehouse
AdventureWorksDW2012, não o cubo.

Em seguida, crie duas Shared Dataset, uma apontando para cada Stored
Procedure criada a pouco. Os nomes podem ser os mesmos das Stored
Procedure. Para isso, clique com o botão direito em Shared Dataset e
aponte para Add New Dataset.

MVTech · 268
Do Banco de Dados Relacional à Tomada de Decisão

Na janela que se abre, selecione o Shared Data Source que aponta


para o banco de dados AdventureWorksDW2012, e desta vez no Query
Type, ao invés de usar a opção Text, use Stored Procedure e então
selecione ContinenteVendas na lista disponível.

Confirme no botão OK e volte para a tela principal. Repita os


passos e faça a mesma coisa para PaisesVendas.

MVTech · 269
Do Banco de Dados Relacional à Tomada de Decisão

Mais uma vez, confirme no botão OK e volte à tela principal.

Repare que ambos Shared Dataset estão configurados.

O próximo passo é criar um relatório que receberá o gráfico dos


continentes. Este será um convencional gráfico de colunas orientado pelo
Eixo X, também conhecido como Gráfico de Barras. Para isso, arraste o

MVTech · 270
Do Banco de Dados Relacional à Tomada de Decisão

componente Chart para a tela do relatório em branco, e no momento que


abrir o assistente para selecionar qual será o modelo do relatório,
selecione o relatório de colunas.

Após a seleção do tipo do relatório, o assistente lhe pergunta qual


será a origem dos dados, neste momento, é necessário informar qual é o
Dataset que possui os dados. Lembre-se que não foi criado nenhum
dataset no menu Report Data. Mesmo assim, selecione o item
ContinenteVendas que é a informação mais ampla que retorna do Data
Warehouse, e nomeie como VendasPorContinente.

MVTech · 271
Do Banco de Dados Relacional à Tomada de Decisão

Confirme com o botão OK. Neste momento um gráfico é plotado


no relatório, mas ainda não possui nenhum campo configurado, apenas
está vinculado à um dataset. Para configurar, como foi feito no Gauge, é
necessário clicar sobre o relatório e trabalhar na Smart Screen que se abre
à sua direita.

MVTech · 272
Do Banco de Dados Relacional à Tomada de Decisão

Para adicionar itens às caixas, clique sobre o símbolo de positivo.


Na caixa Value informe o Total e na Series Group informe o
SalesTerritoryGroup.

MVTech · 273
Do Banco de Dados Relacional à Tomada de Decisão

Após clicar no botão Preview, verifique se o relatório possui o


gráfico.

Este relatório está praticamente pronto, mas ainda precisará


retornar à ele depois de criar o segundo relatório, para criar a conexão do
gráfico de Continente com o outro relatório e o gráfico do País.

MVTech · 274
Do Banco de Dados Relacional à Tomada de Decisão

Para criar o segundo relatório que irá mostrar os países de um


determinado continente, crie o relatório VendasPorPais e arraste o
controle Chart como foi feito no relatório anterior, selecione o tipo de
gráfico que quer apresentar os dados, mais uma vez o Gráfico de Barras e
em seguida clique em Ok.

Ao informar a origem dos dados selecionado o Shared Dataset


PaisesVendas você pode reparar no item Parameters que é possível passar
um valor à ele. Na proposta do capítulo este parâmetro deve ser dinâmico
e informado através do relatório anterior. Não faça nada neste momento.
Ele será preenchido ao voltar e editar o relatório anterior.

Para terminar de configurar este relatório, mais uma vez é


necessário selecionar o gráfico dos países para abrir Smart Screen. Na
caixa Value selecione Sum(Total) e na caixa Series Group adicione
o SalesTerritoryCountry.

Neste momento ambos gráficos estão configurados, mas ainda


não tem uma ação que faz um gráfico chamar o outro. Para fazer esse
vínculo, volte até o gráfico de VendasPorContinente e clique em uma das
barras plotadas. Com as barras selecionadas, clique com o botão direito e
aponte para Series Properties.

MVTech · 275
Do Banco de Dados Relacional à Tomada de Decisão

Na janela que se abre, procure no menu da esquerda o


item Action, ao clicar selecione a opção Go to Report.

MVTech · 276
Do Banco de Dados Relacional à Tomada de Decisão

Neste momento, selecione na caixa de seleção Specify a Report o


relatório VendasPorPais. Em seguida, clique no botão Add para informar
um parâmetro para fazer a ligação entre os relatórios. Ao clicar, dois
campos são apresentados. O primeiro é Name e o segundo é Value. Ao
verificar o que existe na lista de seleção do campo Name é possível
encontrar os nome Continente. Este é o nome do parâmetro que foi criado
na Stored Procedure que irá plotar os dados dos países. Na lista de seleção
do campo Value, existem dois registros, o SalesTerritoryGroup e o Total.
Como o vínculo foi passado através do nome do continente, selecione
SalesTerritoryGroup.

MVTech · 277
Do Banco de Dados Relacional à Tomada de Decisão

No final, sua tela ficará como esta:

MVTech · 278
Do Banco de Dados Relacional à Tomada de Decisão

Clique em OK até voltar à página inicial do relatório. Quando clicar


no botão Preview do relatório VendasPorContinente será possível navegar
entre o Continente e o País, apenas clicando na barra que possui o nome
do continente.

MVTech · 279
Do Banco de Dados Relacional à Tomada de Decisão

Vocês já se depararam com a necessidade de colocar uma


determinada paleta de cores em um gráfico do relatório para encaixar na
identidade visual do cliente?

Uma forma é alterar elemento à elemento, porém, além de sofrer


com o trabalho manual e repetitivo, pode não ficar da forma que se espera.
A proposta deste capítulo é ensinar a criar uma paleta de cores
personalizada e aplicar aos gráficos criados nos relatórios do capítulo
anterior.

A primeira coisa a se fazer é conversar com o time de designers do


cliente e descobrir as cores que combinam ou que devem ser utilizadas.

Uma saída, caso não tenha alguém de design para lhe ajudar na
escolha das cores, existem alguns sites na internet que apresentam
diversas paletas que ajudam neste processo de combinar as cores. Um site
que consulto com frequência é o Colour
Lovers: http://www.colourlovers.com/palettes. Neste site é possível
encontrar paletas de cores que combinam, e o melhor, são gratuitas.

Ao escolher as cores fique atento ao hexadecimal, será necessário


para criar a paleta no relatório.

Como já deve estar acostumado, abra o projeto dos gráficos de


barras criado no capítulo anterior. É a partir dele que a paleta de cores será
modificada.

MVTech · 280
Do Banco de Dados Relacional à Tomada de Decisão

Abra o relatório VendasPorContinente, a modificação da paleta de


cores será feita primeiro neste relatório, depois será feita também no
relatório VendasPorPais.

Por padrão, o Reporting Services mantém a paleta de cores


chamada BrightPastel, é possível visualizar esta paleta na
propriedade Palette do gráfico.

Para criar uma nova paleta de cores com base na ordem correta
de cores, é necessário alterar esta propriedade de BrightPastel
para Custom, e na sequência, criar uma nova paleta na
propriedade CustomPaletteColor.

MVTech · 281
Do Banco de Dados Relacional à Tomada de Decisão

Esta propriedade permite criar uma coleção de cores em


Hexadecimal. Para os exemplos deste capítulo utilizei a paleta Safari do
site Colour Lovers, que pode ser acessada neste link:

http://www.colourlovers.com/palette/3270209/Safari

Para adicionar as cores em Hexadecimal, clique no botão ADD na


parte de baixo da janela. Pode-se alternar as posições nas setas pra cima e
pra baixo para posicionar a cor no elemento correto do seu gráfico.
Finalize clicando em OK até voltar à tela principal.

MVTech · 282
Do Banco de Dados Relacional à Tomada de Decisão

O gráfico já recebe as alterações baseadas nas cores existentes na


nova paleta.

O que antes era assim

MVTech · 283
Do Banco de Dados Relacional à Tomada de Decisão

Depois da mudança da paleta, ficou assim

Repita os mesmos passos para o relatório VendasPorPaises mas


inverta a ordem das cores na nova paleta. Veja como fica o resultado para
as lojas do continente Europeu.

MVTech · 284
Do Banco de Dados Relacional à Tomada de Decisão

MVTech · 285
Do Banco de Dados Relacional à Tomada de Decisão

Ao concluir a leitura do livro espero que você tenha aprendido os


primeiros passos para transformar seus dados transacionais em analíticos,
permitindo uma melhor tomada de decisão para a empresa.

Quando se pensa em trabalhar com Business Intelligence


geralmente as pessoas ficam assustadas, algumas situações podem gerar
este desconforto pela delicadeza dos dados a serem gerados para as
tomadas de decisões. Com este livro esta sensação deve ser diminuída, e
se tudo foi estudado com calma, você sentirá confiança em executar
tarefas como:

 Movimentar dados com SQL Server Integration Services


para montar seu Data Warehouse

 Criar cubo no Analysis Services a partir do Data Warehouse

 Analisar dados do Cubo com cálculos de measures do


Analysis Services

 Também criar KPIs a partir do Analysis Services

 Gerar e disponibilizar relatórios com dados do BI através


do Reporting Services

 Entre outras coisas importantes.

Bons resultados a sua empresa!

MVTech · 286

Das könnte Ihnen auch gefallen