Escolar Documentos
Profissional Documentos
Cultura Documentos
Voltar ao artigo
Neste capítulo de amostra do exame Ref 70-768 Desenvolvendo modelos de dados SQL , aprenda como
criar um banco de dados multidimensional usando o Microsoft SQL Server Analysis Services (SSAS),
projetar e implementar dimensões em um cubo e implementar medidas e grupos de medidas em um
cubo .
Ele contém informações valiosas sobre as habilidades necessárias para passar no exame.
Um modelo semântico de business intelligence é uma camada semântica criada para representar e
aprimorar dados para uso em aplicativos de relatório e análise. O Microsoft SQL Server Analysis
Services (SSAS) oferece suporte a dois tipos de modelos semânticos de business intelligence:
multidimensionais e tabulares. Neste capítulo, revisamos as habilidades necessárias para criar um
banco de dados multidimensional, enquanto exploramos as habilidades necessárias para criar um
modelo tabular no Capítulo 2, “Projetar um modelo semântico tabular de BI”. Começamos com as
etapas necessárias para instanciar fisicamente um banco de dados multidimensional em um servidor
SSAS. Em seguida, trabalhamos nas etapas a serem executadas e nas decisões a serem consideradas
para os dois objetos principais em um banco de dados multidimensional, dimensões e medidas.
Crie um banco de dados multidimensional usando o Microsoft SQL Server Analysis Services
(SSAS)
O processo de design começa com a compreensão de como as pessoas fazem perguntas sobre seus
negócios. Ou seja, você deve decidir como traduzir seus requisitos de negócios em um modelo de
dados que seja adequado como fonte para um banco de dados multidimensional. Depois de carregar
os dados nesse modelo de dados, um processo que não é abordado no exame, prossiga criando um
projeto de banco de dados multidimensional no SQL Server Data Tools para Visual Studio 2015
(SSDT).
Durante o processo de desenvolvimento, você cria objetos de suporte, como uma fonte de dados e
uma visualização da fonte de dados, para definir a conectividade com seu modelo de dados e
fornecer uma camada de abstração para os dados que você usa para desenvolver dimensões, medidas
e cubos. À medida que você trabalha em cada etapa, você implanta cada objeto recém-criado em um
banco de dados multidimensional no servidor SSAS para poder testar seu trabalho e garantir que os
requisitos de negócios sejam atendidos.
Antes de iniciar o design de um novo modelo de dados para usar como fonte para seu banco de
dados multidimensional, você deve dedicar algum tempo para entender como os usuários
corporativos desejam analisar os dados. Você pode entrevistá-los para descobrir os tipos de
perguntas que desejam responder com a análise de dados e revisar os relatórios que usam para
encontrar pistas sobre elementos analíticos importantes. Em particular, você deseja descobrir as
medidas e dimensões que precisa criar no novo modelo de dados. As medidas são os valores
numéricos a serem analisados, como o total de vendas, e as dimensões são as pessoas, lugares, coisas
e datas que fornecem contexto para esses valores. Neste capítulo, você aprende como desenvolver
um banco de dados multidimensional que pode responder aos seguintes tipos de perguntas, também
conhecidas como requisitos de negócios, com base em dados de uma empresa fictícia, a Wide World
Importers:
O que são vendas totais (com e sem impostos incluídos), impostos e lucro por data, vendedor,
local ou item?
Ao analisar transações individuais, qual é a alíquota do imposto e qual é o preço unitário por
item vendido?
Para cada cliente faturado pelas vendas, como essas vendas são divididas pelos clientes que
recebem os itens?
Que motivos os clientes dão para fazer uma compra e como o valor das vendas e as
contagens de vendas são divididos por motivo de vendas?
Quantos itens distintos são vendidos por data, cliente, vendedor ou local?
Quantos itens estão em estoque por data e quais são os níveis de estoque alvo e pontos de
reabastecimento para cada item?
Ao avaliar as perguntas, procure pistas para medir, como “quantos”, “total”, “dólares” ou
“contagem”. Você também deve observar se um valor pode ser obtido diretamente do sistema OLTP
ou se deve ser calculado. Se um valor for calculado, decida se ele pode ser calculado em uma base
escalar (linha por linha) e se a soma dos resultados calculados pode gerar um total geral. Esteja atento
a diferentes termos que se referem à mesma medida e, em seguida, consulte os usuários de negócios
para determinar qual termo usar no banco de dados multidimensional. Usando esses critérios, as
seguintes medidas emergem dos requisitos de negócios:
Quantidade
Contagem de vendas
Valor do imposto
Taxa de imposto
Preço unitário
Quantidade disponível
Nível de reabastecimento
Nível de estoque alvo
A próxima etapa é revisar novamente os requisitos de negócios para identificar dimensões. Uma pista
comum para uma dimensão é a palavra “por” na frente de uma dimensão candidata, embora às vezes
seja incluída apenas implicitamente nos requisitos. Uma segunda revisão dos requisitos comerciais
para importadores do mundo inteiro produz as seguintes dimensões:
Data
Às vezes, há várias datas associadas a uma transação. É importante saber como cada
comunidade de usuários da sua organização associa dados a datas. Na Wide World Importers,
o departamento de vendas está interessado em analisar as vendas por data de fatura,
enquanto o departamento de armazém deseja revisar as vendas por data de entrega.
Cliente
Funcionário
Cidade
Item de estoque
Um dos requisitos da Wide World Importers é analisar as vendas por cor ou tamanho de um
item. Embora a palavra “por” seja uma pista, cor e tamanho são descritores ou características
mais precisas de um item e, portanto, tornam-se parte de uma tabela de dimensão única para
itens. Normalmente não são criadas tabelas de dimensões separadas para características
como esta.
Ralph Kimball, o pai da modelagem dimensional, possui vários livros e recursos online que descrevem
esse tópico em detalhes. Um bom lugar para começar é “Técnicas de Modelagem Dimensional”
em http://www.kimballgroup.com/data-warehouse-business-intelligence-resources/kimball-
techniques/dimensional-modeling-techniques/ .
Embora um esquema em estrela não seja necessário como fonte para SSAS, ele é uma estrutura
preferida para modelos multidimensionais em escala empresarial por vários motivos. Primeiro, o
impacto do acesso ao sistema OLTP do SSAS adiciona contenção de recursos ao seu ambiente, que
você pode evitar criando uma fonte de dados separada. (O grau de impacto no OLTP depende do
modelo de armazenamento selecionado, conforme explicado na seção “Selecione um modelo de
armazenamento” neste capítulo.) Em segundo lugar, a quantidade de tempo para mover dados do
sistema OLTP para o banco de dados multidimensional às vezes é menos ideal do que poderia ser se
você reestruturasse os dados primeiro. Terceiro, às vezes a análise requer acesso a informações
históricas que não estão mais preservadas no sistema de origem. Ter um modelo de dados separado
no qual você armazena dados à medida que eles mudam torna-se uma necessidade nesse
caso. Outras razões para criar um modelo de dados separado incluem, mas não estão limitadas a,
limpar dados que não podem ser corrigidos no sistema OLTP, ter os resultados disponíveis não
apenas para o banco de dados multidimensional, mas para outros sistemas de relatórios downstream
(muitas vezes com melhor desempenho do que consultar o OLTP diretamente) e integrando dados de
vários sistemas OLTP.
Outro tipo de design que você pode implementar para uma dimensão é um floco de neve, no qual
você usa diversas tabelas relacionadas para uma única dimensão. Na modelagem de dimensão
tradicional, o uso de dimensões em floco de neve não é considerado uma prática recomendada
porque adiciona junções ao modelo de dados que um design de esquema em estrela procura
eliminar. Para cenários de relatórios relacionais, as junções adicionais podem ter um impacto adverso
no desempenho. No entanto, quando você usa o SSAS em seu modo de armazenamento padrão, a
estrutura em floco de neve não tem impacto no desempenho e pode ser um design preferível quando
você precisa dar suporte à análise em tabelas de fatos com diferentes níveis de granularidade ou para
simplificar o processo que carrega a dimensão da fonte OLTP. Você pode aprender mais sobre por
que usar uma dimensão floco de neve e como projetá-la corretamente em uma série de postagens de
blog de Jason Thomas que começa em http://sqljason.com/2011/05/when-and-how-to- floco de neve-
dimension.html .
Para carregar o esquema em estrela com dados periodicamente, você usa uma ferramenta ETL
(extrair-transformar-carregar), como o SQL Server Integration Services (SSIS). A ferramenta ETL
normalmente é programada para ser executada todas as noites para carregar linhas novas e alteradas
no esquema em estrela, embora os requisitos de negócios possam ditar uma frequência diferente,
como a cada cinco minutos quando é necessária baixa latência ou uma vez por semana para dados de
origem que mudam com pouca frequência .
Dica de exame
Como o foco do exame 70-768 está na implementação de modelos do Analysis Services, esta
referência do exame não explica como converter dados de uma estrutura OLTP, como Wide World
Importers, em uma estrutura de esquema em estrela adequada para OLAP. A suposição para o exame
é que o design das tabelas de dimensões e fatos esteja completo e que um processo ETL tenha
carregado as tabelas com dados do sistema OLTP de origem. No entanto, você deve estar
familiarizado com os conceitos e a terminologia do esquema em estrela e entender como
implementar recursos do Analysis Services com base em características de dados e requisitos de
análise específicos.
Uma tabela de dimensão contém dados sobre as entidades que um usuário empresarial deseja
analisar — normalmente uma pessoa, um lugar, uma coisa ou um momento específico. Uma
consideração ao projetar uma tabela de dimensões é rastrear o histórico. Uma dimensão de mudança
lenta (SCD) é uma dimensão para a qual você implementa tipos específicos de colunas e técnicas de
ETL especificamente para abordar como gerenciar atualizações de tabela quando os dados são
alterados. Você toma essa decisão de design para cada dimensão separadamente com base nos
requisitos de negócios. As duas abordagens mais comuns para gerenciar o histórico incluem os
seguintes tipos de SCD:
Tipo 1 Apenas os dados atuais são rastreados. O processo ETL atualiza colunas com valores
alterados e perde os valores armazenados anteriormente nessas colunas. Por exemplo, você
pode não acompanhar o histórico de alterações de nomes de funcionários, conforme
mostrado na Figura 1-2 , porque o efeito nas vendas provavelmente não será relevante.
Por exemplo, você pode acompanhar o histórico de alterações nos dados de um item de
estoque, como o preço de varejo, conforme mostrado na Figura 1-3 , porque você pode
querer monitorar se as vendas mudam quando o preço de varejo muda.
SCD Tipo 2 expira a linha original e insere uma nova linha quando os dados de
FIGURA 1-3
origem são alterados
Existem diversas maneiras diferentes de modelar dimensões para acomodar alterações além do Tipo 1
e do Tipo 2, mas essas duas são as mais comuns. Você pode aprender mais sobre o Tipo 1 com Ralph
Kimball em http://www.kimballgroup.com/2008/08/slowly- Changing-dimensions/ e sobre o Tipo 2
em http://www.kimballgroup.com/2008/09/ dimensões de mudança lenta-parte-2/ .
Vamos dar uma olhada em City, uma das tabelas de dimensão do banco de dados
WideWorldImportersDW, para entender os tipos de colunas que ela contém. A Figura 1-2 mostra os
seguintes tipos de colunas comumente encontrados em uma dimensão:
Chave substituta Uma chave primária para a tabela de dimensões identificar exclusivamente
cada linha. Normalmente não tem significado comercial e geralmente é definido como uma
coluna de identidade. Na tabela Cidade, a coluna [City Key] é a chave substituta. A finalidade
de uma chave substituta é evitar linhas duplicadas ao combinar dados de diversas fontes ou
capturar dados históricos para dimensões que mudam lentamente. Além disso, os dados de
origem de uma tabela de dimensão podem não usar um valor inteiro para sua chave primária,
enquanto a aplicação de uma chave baseada em número inteiro em uma tabela de dimensão
garante um desempenho ideal ao processar a dimensão para carregar seus dados em um
banco de dados multidimensional.
Chave natural ou comercial A chave primária na tabela de origem da dimensão, que é [ID da
cidade WWI] na tabela Cidade. Essa coluna normalmente não é exibida para usuários
corporativos para fins analíticos, mas é usada para combinar linhas do sistema de origem com
linhas existentes na tabela de dimensões como parte do processo ETL.
Atributos Colunas descritivas sobre uma linha na tabela de dimensões. Os atributos na tabela
Cidade incluem Cidade, Estado, Província, País, Continente, Território de Vendas, Região, Sub-
região, Local e População Registrada Mais Recente. Os atributos podem ser usados
explicitamente para análise para agregar valores numéricos da tabela de fatos, da mesma
forma que você usa uma cláusula GROUP BY em uma instrução SELECT do Transact-SQL (T-
SQL).
Histórico de dimensão de alteração lenta Um par de colunas para mostrar o intervalo de datas
para o qual uma linha é válida. As colunas do histórico de dimensão que mudam lentamente
especificam o intervalo de datas para o qual o conjunto de atributos na linha é válido em um
SCD Tipo 2. Em WideWorldImportersDW, Valid From e Valid To são as colunas que cumprem
esta função. Outra convenção de nomenclatura comum é StartDate e EndDate.
Uma tabela de dimensão SCD Tipo 1 para a qual apenas os dados atuais são rastreados
normalmente não contém colunas de histórico.
FIGURA 1-4 Várias linhas para um único item de estoque demonstram o manuseio do SCD Tipo 2
Observe que existem três chaves substitutas, Chave de item de estoque, para a mesma chave
natural e ID de item de estoque da Primeira Guerra Mundial. Cada chave substituta está
associada a um intervalo separado de datas Válido desde e Válido até.
Chave de linhagem ou auditoria Uma coluna opcional em uma tabela de dimensão que possui
um relacionamento de chave estrangeira com outra tabela na qual as informações sobre
processos ETL são mantidas. Em WideWorldImportersDW, a tabela City, mostrada na Figura 1-
5 , possui a coluna Lineage Key que se relaciona à tabela Integration.Lineage. Esta última
tabela inclui a data e hora em que o processo ETL começou e terminou, a tabela afetada e o
sucesso do processo.
Uma tabela de fatos contém muitas colunas de dados numéricos. Um usuário empresarial analisa os
dados em muitas dessas colunas de forma agregada, normalmente calculando somas, médias ou
contagens. Outras colunas numéricas contendo chaves estrangeiras são usadas para proteger a
integridade relacional com tabelas de dimensões por meio de relacionamentos de chaves
estrangeiras. Uma tabela de factos suporta comparações destes valores agregados ao longo de
diferentes períodos de tempo, tais como o total de vendas deste ano versus o total de vendas do ano
passado, ou entre diferentes grupos, tais como marcas ou cores de itens em stock. A Figura 1-
6 mostra um exemplo de Sale, uma tabela de fatos em WideWorldImportersDW que contém os
seguintes tipos de colunas:
Chave substituta Uma chave primária para a tabela de fatos identificar exclusivamente cada
linha. Como uma chave substituta para uma tabela de dimensão, normalmente não tem
significado comercial e é frequentemente definida como uma coluna de
identidade. Freqüentemente, uma tabela de fatos não possui chave substituta porque a
coleção de colunas de chave estrangeira representa uma chave composta exclusiva. A
inclusão de uma chave substituta para uma tabela de fatos é uma questão de preferência do
modelador de dados.
Nota Benefícios de uma chave substituta em uma tabela de fatos
Bob Becker, membro do Grupo Kimball estabelecido por Ralph Kimball, recomenda omitir
uma chave substituta em uma tabela de fatos, mas reconhece que ela pode ser útil em
circunstâncias especiais, conforme descreve em seu artigo sobre o tema em
http: //www.kimballgroup .com/2006/07/design-tip-81-fact-table-surrogate-key/ .
Chaves estrangeiras Uma coluna de chave estrangeira para cada tabela de dimensão
relacionada à tabela de fatos. Na tabela Venda, as seguintes colunas são colunas de chave
estrangeira para dimensões: Chave da cidade, Chave do cliente, Chave da cobrança ao cliente,
Chave do item de estoque, Chave da data da fatura, Chave da data de entrega e Chave do
vendedor. A combinação de chaves estrangeiras representa a granularidade , ou nível de
detalhe, da tabela de fatos.
Dimensão degenerada Uma ou mais colunas opcionais em uma tabela de fatos que representa
um valor de dimensão que não está armazenado em uma tabela separada. Tecnicamente
falando, a coluna pode ser armazenada em uma tabela separada porque representa uma
“coisa”, como uma fatura que poderia ser objeto de análise. Muitas vezes, o valor em uma
dimensão degenerada é exclusivo em cada linha, como um identificador de fatura. Porém,
devido à cardinalidade entre a dimensão degenerada e a tabela de fatos, o modelo é mais
eficiente quando a dimensão degenerada faz parte da tabela de fatos. Em outras palavras,
nenhuma junção é necessária para unir duas tabelas potencialmente grandes. Um exemplo
desse tipo de coluna de dimensão degenerada na tabela de fatos de venda é a coluna ID da
fatura da Primeira Guerra Mundial.
Outro motivo para criar uma dimensão degenerada em uma tabela de fatos é otimizar os
relatórios para dados solicitados com frequência, evitando uma junção entre tabelas. Na
tabela de fatos de venda, as colunas Descrição e Pacote são exemplos desse outro tipo de
dimensão degenerada.
Medida Uma ou mais colunas que contêm dados numéricos que descrevem um evento ou
processo de negócios. A tabela de fatos de venda apresenta vendas individuais, portanto,
cada linha contém as seguintes colunas de medida: Quantidade, Preço unitário, Taxa de
imposto, Total excluindo impostos, Valor do imposto, Lucro, Total incluindo impostos, Total
de itens secos e Total de itens do resfriador.
Às vezes, uma tabela de fatos não contém colunas de medidas. Nesse caso, é conhecida
como tabela de fatos sem fatos . Você pode usar uma tabela de fatos sem fatos quando
precisar contar ocorrências de um evento e não tiver outras medidas relacionadas ao
evento. Outro tipo de tabela de fatos sem fatos é uma tabela que serve como uma tabela-
ponte entre uma tabela de fatos e uma tabela de dimensão, conforme descrito na seção
“Modelo de dimensão muitos para muitos” neste capítulo.
Linhagem ou chave de auditoria Uma coluna opcional em uma tabela de fatos, assim como o
mesmo tipo de coluna em uma tabela de dimensões. Na tabela Venda, Lineage Key é a coluna
de linhagem.
FIGURA 1-6 Tabela de fatos de vendas no banco de dados WideWorldImportersDW
Criação de projeto
Depois de ter um esquema em estrela implementado e carregado com dados, você está pronto para
criar um projeto no qual realizará o desenvolvimento de seu banco de dados multidimensional. Para
fazer isso, você usa o SSDT, para o qual há um link para a versão atual
em https://msdn.microsoft.com/en-us/library/mt204009.aspx .
De tempos em tempos, a Microsoft revisa o SSDT para atualizar e corrigir recursos. Se o link
referenciado não for mais válido, você poderá pesquisar SQL Server Data Tools for Visual Studio
em http://www.microsoft.com para localizá-lo e baixá-lo.
3. Na parte inferior da caixa de diálogo, digite um nome para o projeto, selecione um local e,
opcionalmente, digite um novo nome para a solução do projeto. O projeto para os exemplos
neste capítulo é denominado 70-768-Ch1.
Uma solução é um contêiner para um ou mais projetos. Por exemplo, você pode ter um projeto de
dados para definir suas estruturas de tabela, um projeto SSIS para executar as etapas de ETL, um
projeto Analysis Services para criar seu banco de dados multidimensional e um projeto Microsoft SQL
Server Reporting Services (SSRS) para desenvolver relatórios para exibir dados do seu banco de dados
multidimensional.
A próxima etapa é definir uma fonte de dados relacional para seu banco de dados
multidimensional. O SSAS oferece suporte às seguintes fontes de dados:
Oracle 9i ou superior
Informix V11.10
Dependendo da fonte de dados que você está acessando, talvez seja necessário fazer download e
instalar o provedor de dados da fonte de dados em seu computador. A instalação do SSDT não instala
provedores de dados.
1. Clique com o botão direito na pasta Fontes de Dados na janela Gerenciador de Soluções e
selecione Nova Fonte de Dados.
Usar nome de usuário e senha específicos do Windows Use esta opção quando precisar
se conectar à sua fonte de dados com um login específico. Uma prática recomendada
de segurança é estabelecer um login do Windows com privilégios baixos e que tenha
permissão de leitura para a fonte de dados. Quando você implanta a fonte de dados
no servidor, o SSAS criptografa a senha para protegê-la. Se posteriormente você
precisar criar um script do banco de dados, como acontece quando deseja migrar de
um servidor de desenvolvimento para um servidor de produção, você deverá fornecer
a senha novamente.
Usar a conta de serviço Para seguir os exemplos deste capítulo, recomenda-se a
seleção desta opção. Com esta opção selecionada, a conta que executa o serviço
SSAS, que por padrão é NT Service\MSSQLServerOLAPService, é usada para conectar-
se à fonte de dados.
Usar as credenciais do usuário atual Não selecione esta opção quando estiver
desenvolvendo um banco de dados multidimensional. Ele está incluído para dar
suporte à autenticação para consultas de mineração de dados.
Um novo arquivo é adicionado ao seu projeto, Wide World Importers DW.ds. Este arquivo,
como todos os outros arquivos que você adiciona ao seu projeto durante o processo de
desenvolvimento, é um arquivo Extensible Markup Language for Analysis (XMLA) que define o
objeto a ser criado no banco de dados multidimensional. Você pode visualizar o conteúdo de
qualquer arquivo XMLA clicando com o botão direito na janela Solution Explorer e
selecionando Exibir código.
Você deve garantir que, independentemente da opção selecionada para representação, o login
aplicável receba a permissão de leitura no banco de dados de origem. Caso contrário, ao tentar criar o
banco de dados multidimensional no servidor SSAS posteriormente, você receberá uma mensagem
de erro. Se você configurar o processamento de write-back ou ROLAP conforme descrito no Capítulo
4, “Configurar e manter o SQL Server Analysis Services (SSAS)”, a conta usada também deverá ter
permissão de gravação.
Para configurar a permissão de leitura para a conta de serviço, abra o SQL Server Management Studio
(SSMS), conecte-se ao Mecanismo de Banco de Dados, expanda o nó Segurança no Pesquisador de
Objetos, clique com o botão direito no nó Logins e selecione Novo Login. Na caixa de diálogo Login,
digite NT SERVICE\MSSQLServerOLAPService na caixa de texto Nome de login. Clique na página
Mapeamento de usuário, marque a caixa de seleção WideWorldImportersDW na seção Usuários
mapeados para este logon da página e marque a caixa de seleção db_datareader na seção Associação
de função de banco de dados para: WideWorldImportersDW da página. Clique em OK para adicionar
o login.
A definição da fonte de dados define onde os dados estão localizados e como autenticar, mas não
especifica quais dados usar para carregar objetos de banco de dados, como dimensões e
cubos. Uma visualização da fonte de dados (DSV) é a definição, que identifica as tabelas e colunas
específicas nas tabelas a serem usadas ao preencher o banco de dados multidimensional. É também
uma camada de abstração útil quando você tem permissão apenas de leitura no banco de dados de
origem ou quando precisa de uma visão simplificada de suas estruturas. Você pode fazer alterações
lógicas nas tabelas e visualizações no DSV para dar suporte a requisitos específicos no SSAS sem a
necessidade de alterar a fonte de dados física. De modo geral, você deve tentar alterar a fonte de
dados física conforme necessário sempre que possível, pois a implementação de alterações lógicas no
DSV pode introduzir desafios na manutenção contínua, além do processo de solução de problemas.
Clique com o botão direito na pasta Data Source Views no Solution Explorer e selecione New
Data Source View.
Em seguida, enquanto pressiona a tecla CTRL, selecione as seguintes tabelas na lista Objetos
Disponíveis:
Cidade (Dimensão)
Cliente (Dimensão)
Data (Dimensão)
Funcionário (Dimensão)
Item de estoque (dimensão)
Venda (fato)
Em seguida, clique na seta para a direita (>) para adicionar as tabelas selecionadas à lista
Objetos incluídos.
Clique em Avançar e em Concluir para concluir o assistente. Um novo arquivo, Wide World
Importers DW.dsv, é adicionado ao projeto e o Data Source View Designer é aberto como
uma janela de documento no SSDT, conforme mostrado na Figura 1.9 .
Se uma chave primária não estiver definida em uma tabela de dimensão, seja por design ou porque o
objeto de origem é uma exibição, você poderá adicionar uma chave lógica clicando com o botão
direito do mouse no nome da coluna no diagrama da tabela ou no painel Tabelas e selecionando
Defina a chave primária lógica. Este comando não está disponível quando já existe uma chave para a
tabela. Se você pressionar a tecla CTRL e selecionar várias colunas, poderá configurar uma chave
composta como chave primária lógica.
Para criar um relacionamento entre tabelas, como entre uma tabela de fatos e uma tabela de
dimensões, clique na coluna de chave estrangeira na tabela de fatos e arraste-a para a coluna de
chave primária na tabela de dimensões. As duas colunas devem ter o mesmo tipo de dados antes de
você poder criar o relacionamento. A definição de relacionamentos não é obrigatória, mas é útil
porque o SSDT pode fazer recomendações ou configurar automaticamente determinados objetos
com base nos relacionamentos DSV que detecta.
Renomear objetos Ao renomear tabelas e colunas no DSV, os assistentes usados para criar
objetos para o banco de dados refletem os novos nomes, que devem ser um nome
amigável. Embora seja possível renomear posteriormente um objeto criado por um assistente
a qualquer momento, às vezes você pode fazer referência ao mesmo objeto DSV diversas
vezes e minimizar o número de alterações de nome necessárias em outras partes do projeto.
Criar um cálculo nomeado A adição de um cálculo nomeado a um DSV é como adicionar uma
expressão a uma instrução SELECT para adicionar uma coluna derivada a uma
visualização. Idealmente, quando você precisar de dados estruturados de uma maneira
específica para SSAS, projete a tabela de origem para incluir essa estrutura ou crie uma
visualização. Um motivo comum para reestruturar dados é concatenar colunas, como pode
ser necessário fazer com as colunas Nome e Sobrenome para criar uma coluna para o nome
de uma pessoa.
Se você não conseguir fazer a alteração na origem, crie um cálculo nomeado no DSV clicando
com o botão direito do mouse no cabeçalho da tabela a ser atualizada e selecionando Novo
Cálculo Nomeado. Na caixa de diálogo Criar cálculo nomeado, digite um nome na caixa
Nome da coluna, opcionalmente digite uma descrição para o cálculo na caixa Descrição e
digite uma expressão SQL (Structured Query Language) específica da plataforma para a nova
coluna na caixa Expressão. caixa. Não há validação da expressão quando você clica em OK
para fechar a caixa de diálogo, portanto, teste primeiro sua expressão em uma ferramenta de
consulta. Você usa a sintaxe aplicável à versão do SQL aplicável à sua fonte de dados, como
Transact-SQL quando sua fonte de dados é SQL Server.
Criar uma consulta nomeada Uma consulta nomeada em um DSV é o equivalente lógico de
uma visualização em um banco de dados relacional. Ao contrário de um cálculo nomeado,
que é limitado a uma expressão SQL, uma consulta nomeada é uma instrução SELECT. Você
pode usá-lo para reduzir o número de colunas de uma tabela para simplificar o DSV, criar
novas colunas usando expressões SQL ou unir tabelas para simplificar as estruturas de dados
no DSV e evitar um design em floco de neve. Você pode encontrar exemplos de adição de
consultas nomeadas ao DSV na Habilidade 1.2, “Projetar e implementar dimensões em um
cubo”, e na Habilidade 1.3, “Implementar medidas e grupos de medidas em um cubo”.
1. Clique com o botão direito na pasta Dimensões no Solution Explorer e clique em Nova
Dimensão.
Província Estadual
País
Continente
Território de vendas
Região
Sub-região
Ao criar uma dimensão e, em seguida, navegar pelos membros da dimensão, ocasionalmente, aparece
um membro chamado Desconhecido que não existe na tabela de origem. A adição deste membro a
uma dimensão é um recurso do SSAS que acomoda problemas de qualidade de dados em uma tabela
de fatos. O membro desconhecido criado pelo SSAS não corresponde a uma linha na tabela de
dimensões, mas serve como um depósito para valores para os quais uma chave na coluna de chave
estrangeira na tabela de fatos está ausente ou é inválida. Dessa forma, quando as consultas calculam
os totais de uma medida, todas as linhas da tabela de fatos são incluídas (após a aplicação dos
agrupamentos e filtros aplicáveis), mesmo quando não podem ser correspondidas aos membros de
dimensão existentes.
A adição do membro gerado pelo SSAS é determinada pelo valor da propriedade UnknownMember
para uma dimensão, que você pode acessar na janela Propriedades na página Estrutura da Dimensão
do designer de dimensão após selecionar o objeto de dimensão no painel Atributos. O membro será
adicionado se o valor da propriedade UnknownMember for Visível ou Oculto. De qualquer forma, os
valores totais gerais de uma dimensão mostram o valor agregado correto para uma tabela de
fatos. Quando esta propriedade estiver definida como Visível e sua consulta incluir os membros da
dimensão nos resultados, você poderá ver o valor agregado das linhas da tabela de fatos com uma
chave ausente ou incorreta para essa dimensão atribuída ao membro Desconhecido. Quando esta
propriedade é definida como Oculto, o membro Desconhecido não é exibido nos resultados da
consulta, embora o total geral inclua corretamente seus valores. No entanto, ocultar o membro
Desconhecido pode ser confuso para os usuários corporativos, que podem perceber que a agregação
de membros visíveis não é igual ao total geral. Por esse motivo, não é considerada prática
recomendada ocultar o membro Desconhecido.
Na prática do mundo real, o seu processo ETL deve impedir a inserção de uma linha em uma tabela
de fatos se um membro da dimensão ainda não existir. Se você revisar as tabelas de dimensão no
banco de dados WideWorldImportersDW, poderá ver um membro Desconhecido com uma chave
substituta de 0 em cada tabela. A adição de um membro Desconhecido a uma dimensão é uma
prática comum para lidar com problemas de qualidade de dados. Ao gerenciar membros de dimensão
ausentes para dados de fatos no processo ETL, você deve remover o membro Desconhecido gerado
pelo SSAS. Para fazer isso, defina o valor da propriedade UnknownMember como Nenhum.
Dica de exame
Esteja preparado para responder perguntas sobre como trabalhar com o Membro Desconhecido no
exame. Para obter mais análises sobre este tópico, consulte “Definindo o membro desconhecido e as
propriedades de processamento nulo” em https://msdn.microsoft.com/en-us/library/ms170707.aspx .
Na Habilidade 1.2, revisamos cenários de uso específicos que exigem etapas adicionais de
desenvolvimento. Enquanto isso, como prática geral para todas as dimensões que você desenvolve,
você deve avaliar quais das seguintes tarefas são necessárias, se houver alguma:
Renomear objetos Por exemplo, observe no painel Atributos que há um ícone de chave
próximo a Chave da Cidade para designá-lo como o atributo chave. Em outras palavras, este é
o atributo referenciado na tabela de fatos. No Assistente de Dimensão, você especificou City
Key como a coluna-chave e City como a coluna de nome. O nome do atributo é herdado do
nome da coluna-chave. Nesse caso, o nome City Key não é fácil de usar porque muitos
usuários empresariais podem não entender o que Key significa. De modo mais geral,
considere evitar termos técnicos e nomear objetos usando espaços incorporados, letras
maiúsculas e termos comerciais para criar objetos fáceis de usar. Para renomear uma
dimensão ou atributo, selecione-o no painel Atributos. Você pode clicar com o botão direito
do mouse no objeto, selecionar Renomear e digitar o novo nome ou substituir a propriedade
Nome no painel Atributos. Neste caso, renomeie o atributo City Key para City.
Alterar a ordem de classificação Cada membro do atributo possui uma propriedade OrderBy
que define a ordem de classificação padrão que determina a organização dos membros do
atributo em um grupo, como quando você exibe muitos membros do atributo em linhas em
uma tabela dinâmica. Na maioria dos casos, os membros do atributo são exibidos em ordem
alfabética, mas você pode substituir esse comportamento se tiver uma coluna com valores
que definam uma ordem de classificação alternativa. Você pode escolher um dos seguintes
valores para a propriedade OrderBy.
Chave Este valor é o padrão para cada atributo, exceto o atributo chave se você
atribuiu a ele uma coluna de nome no Assistente de Dimensão porque cada atributo
sempre possui uma coluna de chave, mas opcionalmente possui uma coluna de
nome. A ordem de classificação será alfabética se a coluna-chave for um tipo de
dados de string (Char ou WChar) ou numérica se o tipo de dados da coluna-chave
não for uma string.
Nome A ordem de classificação é definida como Nome para o atributo chave por
padrão quando você especifica uma coluna de nome no Assistente de
Dimensão. Qualquer atributo em uma dimensão pode ter colunas separadas
atribuídas como coluna-chave ou coluna de nome, portanto, você pode definir a
ordem de classificação com base na coluna de nome, se for esse o caso.
Agrupar membros de atributos em intervalos Um recurso menos comumente usado, mas não
menos importante, do SSAS é sua capacidade de dividir um grande conjunto de membros de
atributos em intervalos discretos. Por exemplo, se você tiver 100.000 clientes, será
impraticável para um usuário adicionar todos os clientes de uma vez a uma tabela
dinâmica. Em vez disso, você pode configurar o SSAS para criar grupos de clientes definindo
as propriedades DiscretizationBucketCount e DiscretizationMethod.
Você pode encontrar uma discussão completa sobre como configurar as propriedades de
discretização por Scott Murray em “Discretização do SQL Server Analysis Services”
em https://www.mssqltips.com/sqlservertip/3155/sql-server-análise-services-discretization/ .
Dica de exame
O banco de dados WideWorldImportersDW não inclui traduções, portanto você não pode explorar
esse recurso no banco de dados multidimensional que está construindo para este capítulo. No
entanto, é provável que o exame teste seus conhecimentos sobre o assunto. Para saber mais sobre
como adicionar definições de tradução, consulte “Traduções em modelos multidimensionais (Analysis
Services)” em https://msdn.microsoft.com/en-us/library/hh230908.aspx e “Definindo e navegando por
traduções” em https:/ /msdn.microsoft.com/en-us/library/ms166708.aspx . As traduções aplicam-se
não apenas às dimensões, mas também às legendas dos cubos, conforme descrito no artigo Microsoft
Developer Network (MSDN).
Uma prática recomendada em programação é construir o código uma vez e depois referenciá-lo
várias vezes. Você pode pensar que existe uma prática recomendada semelhante no SSAS. Digamos
que você tenha vários servidores SSAS configurados em sua empresa para dar suporte a diferentes
departamentos e hospedar diferentes bancos de dados multidimensionais em cada servidor. Se você
seguir as práticas recomendadas de modelagem dimensional, terá dimensões conformadas em seu
datamart. Ou seja, você tem tabelas de dimensões relacionadas a diferentes tabelas de fatos, como
uma dimensão Data que é comum a todas as análises. Se você construir uma dimensão de data para
uso em um banco de dados multidimensional, por que não usar o mesmo objeto de dimensão no
outro banco de dados multidimensional? O SSAS permite adicionar uma dimensão vinculada a outro
banco de dados multidimensional para que você tenha apenas uma dimensão para construir e
manter. No entanto, o uso de dimensões vinculadas não é considerado uma prática recomendada no
desenvolvimento de SSAS porque pode introduzir problemas de desempenho em cubos grandes.
Outra maneira de pensar em construir uma vez e reutilizar seu trabalho de desenvolvimento é salvar
os arquivos .dim no controle de origem. Você pode então exigir que novos projetos de banco de
dados multidimensionais adicionem arquivos .dim do controle de origem, em vez de criar uma nova
dimensão diretamente. Dessa forma, você pode manter o projeto em um local central e se beneficiar
da capacidade de reutilização sem introduzir possíveis problemas de desempenho.
Se você ainda quiser saber mais sobre como trabalhar com dimensões vinculadas, consulte “Definir
dimensões vinculadas” em https://msdn.microsoft.com/en-us/library/ms175648.aspx .
Desenvolva um cubo
Um cubo é o objeto que os usuários empresariais exploram ao interagir com um banco de dados
multidimensional. Ele combina dados de medidas de tabelas de fatos com dados de dimensão. No
mínimo, você associa uma única tabela de fatos a um cubo, embora seja comum associar diversas
tabelas de fatos a um cubo.
Assim como o desenvolvimento de dimensão, o desenvolvimento de cubo começa com o uso de um
assistente. Para adicionar um cubo ao seu projeto, execute as seguintes etapas:
1. Inicie o Cube Wizard clicando com o botão direito na pasta Cubes no Solution Explorer e
selecionando New Cube.
2. Clique em Avançar na primeira página do assistente, mantenha a opção padrão Usar tabelas
existentes e clique em Avançar.
A página Selecionar Método de Criação do Assistente de Cubo também permite escolher uma
das seguintes alternativas para a opção padrão: Criar um Cubo Vazio ou Gerar Tabelas na
Fonte de Dados. Assim como os métodos de criação de dimensão, essas opções adicionais
normalmente são usadas quando você desenvolve um protótipo de banco de dados
multidimensional e ainda não tem as tabelas de origem do esquema em estrela
disponíveis. Para saber mais sobre essas opções, consulte “Selecionar método de criação
(Assistente de cubo)” em https://msdn.microsoft.com/en-us/library/ms187975.aspx .
No entanto, você pode decidir definir diversas dimensões primeiro. Se fizer isso, você verá as
dimensões disponíveis listadas aqui e poderá incluí-las ou excluí-las conforme necessário ao
usar o Assistente de Cubo. Por outro lado, ao criar dimensões após concluir o Assistente de
Cubo, você segue diferentes etapas para adicioná-las ao cubo, conforme explicado na
Habilidade 1.2.
O objetivo desta página no assistente é identificar tabelas de dimensões para as quais existe
um relacionamento com a tabela ou tabelas de fatos selecionadas para o cubo. Se você
mantiver uma tabela selecionada nesta página, o Cube Wizard criará uma dimensão básica
para essa tabela e a adicionará ao projeto como um novo arquivo .dim. Você pode então
configurar as propriedades da dimensão conforme necessário para atender aos seus
requisitos de análise.
7. Para finalizar o assistente, clique em Avançar e, em seguida, clique em Concluir para incluir o
arquivo Wide World Importers DW.cube no projeto e exibir o designer de cubo como uma
janela SSDT.
8. Expanda Venda no painel Medidas da página Estrutura do Cubo do designer de cubo para ver
todas as medidas adicionadas ao cubo, conforme mostrado na Figura 1-17 .
FIGURA 1-17 Designer de cubo
O designer de cubo também inclui um painel Dimensões que exibe a única dimensão incluída
no cubo, Cidade. Além disso, o painel Visualização da Fonte de Dados exibe um diagrama da
tabela de fatos, exibida com um cabeçalho amarelo, e a tabela de dimensões relacionada,
exibida com um cabeçalho azul.
Sempre que você vir um sublinhado azul ondulado em um designer, poderá passar o cursor sobre ele
para visualizar o texto de um aviso de design. Nesse caso, o cubo no painel Medidas e Dimensões
está associado ao mesmo aviso: Evite cubos com uma única dimensão. Existem avisos de design para
alertá-lo sobre possíveis problemas que podem afetar o desempenho ou a usabilidade. Por ser apenas
um aviso, você poderá criar seu banco de dados multidimensional com êxito se ignorar o aviso. À
medida que você ganha experiência no desenvolvimento de modelos multidimensionais, você pode
determinar quais avisos você deve abordar e quais ignorar caso a caso. Para obter mais informações
sobre como trabalhar com avisos de design, consulte “Avisos (Database Designer) (Analysis Services-
Multidimensional Data)” em https://msdn.microsoft.com/en-us/library/bb677343.aspx .
Neste ponto, você criou as definições de uma fonte de dados, uma visualização de fonte de dados,
uma dimensão e um cubo, que existem apenas no contexto de um projeto, mas o banco de dados
ainda não existe no servidor e ninguém pode explore o cubo até que isso aconteça. Para criar o banco
de dados no servidor, você deve implantar o projeto do SSDT. Para garantir a implantação do projeto
no servidor correto, revise e, se necessário, atualize as propriedades do projeto. Para fazer isso, clique
com o botão direito no nome do projeto no Solution Explorer e selecione Propriedades. Na caixa de
diálogo 70-768-Ch1 Property Pages, selecione a página Deployment, conforme mostrado na Figura 1-
18 , e atualize a caixa de texto Server com o nome do seu servidor SSAS se precisar implantar em um
servidor remoto em vez de localmente.
Opção de processamento O valor padrão é Padrão, que avalia o estado processado de cada
objeto na solução e executa as etapas necessárias para colocar o objeto em um estado
processado quando você implanta o projeto. Você pode alterar esse valor para Não processar
se desejar instruir manualmente o servidor a processar objetos como uma etapa separada ou
Completo se desejar que o banco de dados seja processado completamente sempre que você
implantar seu projeto a partir do SSDT. Por enquanto, o valor padrão é suficiente para
trabalhar nos exemplos deste capítulo. No Capítulo 4, essas opções de processamento são
descritas com mais detalhes.
Implantação Transacional O valor padrão é False, o que significa que a implantação não é
transacional. Nesse caso, a implantação poderá ser bem-sucedida, mas o processamento
poderá falhar. Escolha True se desejar reverter a implantação se o processamento falhar.
Modo Servidor O valor padrão é Implantar somente alterações, que implanta apenas objetos
do seu projeto que ainda não existem no servidor ou que são diferentes daqueles no
servidor. Esta opção é mais rápida que a opção Implantar tudo, que implanta todos os objetos
do seu projeto no servidor.
Quando estiver pronto para criar o banco de dados no servidor, clique com o botão direito do mouse
no projeto no Solution Explorer e selecione Implantar. Na primeira vez que você executar esta etapa, o
processo de implantação criará o banco de dados no servidor e adicionará todos os objetos definidos
no projeto. Cada vez subsequente que você implantar o projeto, desde que você tenha mantido as
opções de implantação padrão nas propriedades do projeto, o processo de implantação preservará o
banco de dados existente e adicionará quaisquer novos objetos de banco de dados e atualizará
quaisquer objetos de banco de dados modificados no projeto .
Você pode confirmar a criação do banco de dados multidimensional abrindo o SSMS e conectando-se
ao Analysis Services. No Object Explorer, expanda a pasta Databases para visualizar os bancos de
dados existentes e, em seguida, expanda as subpastas para ver os objetos atualmente no banco de
dados, conforme mostrado na Figura 1-19 .
Agora o cubo está pronto para ser explorado usando qualquer ferramenta compatível com SSAS,
como Excel, Microsoft Power BI Desktop ou SSRS, mas ainda não está tão bem configurado quanto
poderia estar. Há mais dimensões e tabelas de fatos para adicionar, bem como muitas alterações de
configuração na dimensão e no cubo a serem consideradas e implementadas, que você aprenderá nas
Habilidades 1.2 e 1.3.
O restante deste capítulo descreve muitas outras tarefas que você executa durante o desenvolvimento
de um banco de dados multidimensional. Algumas dessas tarefas são sempre necessárias, enquanto
outras dependem dos requisitos do negócio. Se você seguir todas as etapas descritas neste capítulo
para produzir o banco de dados multidimensional 70-768-Ch1, o banco de dados resultante não será
tão completo quanto poderia ser e, em alguns casos, é planejado para demonstrar uma técnica
porque seu objetivo é ilustrar os tópicos que você deve entender para o exame. Levar o banco de
dados multidimensional de exemplo ao seu melhor estado está fora do escopo deste livro.
Para seus próprios projetos, explore o cubo minuciosamente e incentive os usuários corporativos a
ajudá-lo a testar os resultados. Comece revisando as convenções de nomenclatura de dimensões,
atributos, hierarquias, grupos de medidas e medidas. Certifique-se de que os membros do atributo
sejam classificados em uma sequência que faça sentido para seus usuários. Verifique os valores
agregados à medida que você divide os dados usando diversas combinações de dimensões e
atributos e compare esses valores com consultas SQL comparáveis na fonte de dados.
Dica de exame
MOLAP
O armazenamento MOLAP compacta dados e os distribui em disco com mais eficiência do que outros
modelos de armazenamento, mas também requer mais tempo para processar dados. Quando o SSAS
processa dados para armazenamento MOLAP, ele usa o DSV para gerar as instruções SQL necessárias
que recuperam dados da fonte relacional, reestrutura os resultados para armazenamento em disco em
um formato proprietário e, em seguida, calcula e armazena agregações para medidas, conforme
mostrado em Figura 1-20 . As agregações serão calculadas somente se você tiver definido regras de
agregação conforme descrito no Capítulo 4. Quando o SSAS recebe uma solicitação de dados de uma
consulta de Expressão Multidimensional (MDX), ele obtém os dados agregados ou dados detalhados
no armazenamento MOLAP para preparar os resultados.
Mais precisamente, o SSAS recupera dados do armazenamento MOLAP se os dados não estiverem na
memória. O SSAS usa armazenamento em disco e cache para gerenciar dados multidimensionais. Para
fins de modelos de armazenamento contrastantes, suponha que os dados para uma consulta não
estejam disponíveis na memória e devam ser recuperados do modelo de armazenamento aplicável. O
Capítulo 4 se aprofunda na mecânica do processamento de consultas, explicando a relação entre
armazenamento em disco e cache.
ROLAP
Com o armazenamento ROLAP, o SSAS não recupera dados da fonte relacional durante o
processamento. Em vez disso, o processamento envolve apenas a verificação da consistência dos
dados e, portanto, é executado muito mais rapidamente do que o processamento MOLAP. Se você
configurar agregações além do armazenamento ROLAP, os valores agregados serão armazenados na
fonte de dados, conforme mostrado na Figura 1-21 . Quando o SSAS recebe uma solicitação MDX de
dados, ele usa o DSV para traduzir a solicitação em uma instrução SQL e envia essa instrução para a
fonte de dados. Por exemplo, se a fonte de dados for SQL Server, o MDX será traduzido em T-SQL.
Para configurar uma dimensão para usar armazenamento ROLAP, abra o designer de dimensão e
selecione o objeto de dimensão no painel Atributos. Nas janelas Propriedades, selecione ROLAP na
lista suspensa da propriedade StorageMode. Você aprenderá como configurar o ROLAP para
partições de grupos de medidas no Capítulo 4.
HOLAP
As consultas HOLAP são potencialmente mais lentas para serem resolvidas. Além disso, os requisitos
de armazenamento no servidor SSAS não são realmente menores porque o SSAS deve ler todos os
dados da fonte de dados para construir agregações e índices e requer espaço suficiente para fazer
isso. O SSAS descarta os dados posteriormente, reduzindo assim os requisitos de
armazenamento. Como você deve levar em consideração a sobrecarga de armazenamento suficiente
para o processamento, o HOLAP não é uma boa opção se seu objetivo for minimizar o
armazenamento.
É possível configurar uma dimensão para usar somente armazenamento MOLAP ou ROLAP. O
armazenamento HOLAP aplica-se apenas a partições de cubo.
Existem vários tipos diferentes de modelos de dimensão que podem ser definidos para seu banco de
dados multidimensional. Para alguns modelos dimensionais, você define o tipo configurando seu tipo
de relacionamento de uso de dimensão na página Uso de Dimensão do designer de cubo. Para os
outros modelos dimensionais, configure propriedades de dimensão ou cubo. Nesta seção, revisamos
cada tipo de modelo de dimensão e as etapas necessárias para configurá-lo.
Quando uma dimensão não atende aos critérios de nenhum dos outros modelos dimensionais
descritos nesta seção, ela é considerada uma dimensão regular. Ao adicioná-lo a um cubo, a
existência de um relacionamento de chave estrangeira entre sua tabela de dimensões correspondente
e a tabela de fatos de um grupo de medidas geralmente resulta na adição de um tipo de
relacionamento regular. Às vezes, por vários motivos, pode ser necessário adicionar esse tipo de
relacionamento manualmente.
Você pode confirmar a existência de um relacionamento regular analisando o uso da dimensão. Para
fazer isso, execute as seguintes etapas:
1. No Solution Explorer, clique duas vezes em Wide World Importers DW.cube para abrir o
designer de cubo e, em seguida, clique na guia Dimension Usage. Quando você vê um texto
exibido sem um ícone na interseção de células entre uma dimensão e um grupo de medidas,
conforme mostrado na Figura 1-23 , o tipo de relacionamento é Regular.
Uso da dimensão do cubo definindo um relacionamento entre uma dimensão e um
FIGURA 1-23
grupo de medidas
2. Clique no botão de reticências na interseção da célula para abrir a caixa de diálogo Definir
Relacionamento, mostrada na Figura 1-24 .
Quando Regular for selecionado na lista suspensa Selecionar tipo de relacionamento, você
deverá identificar o atributo de granularidade na dimensão e a coluna correspondente na
tabela do grupo de medidas.
Na lista suspensa Atributo de granularidade, você pode selecionar qualquer atributo que
exista no objeto de dimensão do seu projeto. Esta lista não inclui atributos da tabela de
dimensões que aparecem no DSV se esses atributos não forem incluídos no objeto de
dimensão.
Vamos configurar uma nova dimensão, configurar um modelo de dimensão de fatos e verificar os
resultados seguindo estas etapas:
1. No Solution Explorer, clique com o botão direito na pasta Dimensões, selecione Nova
Dimensão e clique em Avançar duas vezes para prosseguir para a página Especificar
Informações de Origem do assistente.
3. As duas chaves primárias na tabela Venda são exibidas na lista Colunas-chave, o que exige
que você selecione um item na lista Coluna de nome. No entanto, não existe nenhuma coluna
que represente adequadamente um valor para cada linha desta tabela e a data da fatura não
é necessária para identificar exclusivamente cada linha da tabela. Portanto, você pode limpar
esse valor.
4. Abra a lista suspensa que contém a Chave da data da fatura, role até o topo da lista e
selecione a linha em branco no topo da lista para remover a Chave da data da fatura. Agora
você não precisa mais fornecer um valor de coluna de nome, então clique em Avançar para
continuar.
10. Renomeie o atributo WWI Invoice ID clicando com o botão direito do mouse no painel
Atributos, selecionando Renomear e digitando Invoice .
11. Clique duas vezes no arquivo Wide World Importers DW.cube no Solution Explorer, vá para a
página Estrutura do Cubo, clique com o botão direito no espaço em branco no painel
Dimensões, selecione Adicionar Dimensão do Cubo, selecione Fatura e clique em OK. Agora a
dimensão do projeto está incluída no cubo.
12. Clique na guia Uso da Dimensão do designer de cubo, clique na célula denominada Chave de
Venda e clique no botão de reticências na célula.
13. Na caixa de diálogo Definir Relacionamento, selecione Fato na lista suspensa Selecionar Tipo
de Relacionamento, conforme mostrado na Figura 1-25 . Não há mais nada para configurar
porque a coluna do atributo de granularidade da dimensão também é uma coluna na tabela
de fatos do grupo de medidas.
14. Clique em OK para fechar a caixa de diálogo. Um ícone é exibido na célula Chave de Venda
para indicar o relacionamento de fato entre a dimensão Fatura e o grupo de medidas Venda.
15. Clique com o botão direito no projeto no Solution Explorer e selecione Implantar.
16. Depois que a mensagem Implantação Concluída com Êxito for exibida, clique na guia
Navegador no designer de cubo, expanda o nó Medidas na árvore de metadados do cubo,
expanda a pasta Venda e arraste Contagem de Vendas para a janela de consulta denominada
Arraste Níveis ou Medidas Aqui para Adicionar ao Consulta.
17. Expanda o nó Fatura e arraste Fatura (ao lado da coleção retangular de quadrados azuis) para
a área próxima a Contagem de vendas. O navegador gera uma consulta MDX nos bastidores
e exibe os resultados, conforme mostrado na Figura 1.26 . Aqui você pode ver que algumas
faturas têm apenas um item vendido, enquanto outras têm vários itens vendidos. À medida
que você adiciona dimensões ao cubo, você pode criar uma consulta para ver os itens de
estoque específicos vendidos, o vendedor que vende o item e muito mais.
FIGURA 1-26 Navegador no designer de cubo mostrando Contagem de vendas por fatura
Dica de exame
Uma hierarquia irregular pode ser uma estrutura de dimensão padrão ou pai-filho. Para o exame, você
deverá saber como usar a propriedade HideMemberIf para gerenciar a navegação entre níveis de uma
hierarquia irregular, conforme descrito em “Hierarquias irregulares”
em https://msdn.microsoft.com/en-us/library/ms365406.aspx . Xian Wang tem uma postagem no blog
intitulada “Hierarquias irregulares e HideMemberIf: uma visão aprofundada” que ilustra suas opções
para modelar hierarquias irregulares em https://xzwang.wordpress.com/2013/07/10/ragged-hierarchy-
and- ocultarmembroif/ . Você também deve revisar o comentário de Chris Webb sobre o
comportamento irregular da hierarquia em sua postagem no blog “Ragged Hierarchies,
HideMemberIf and MDX Compatibility” em https://blog.crossjoin.co.uk/2009/11/11/ragged-
hierarchies-hidememberif-and -mdx-compatibilidade/ .
O banco de dados WideWorldImportersDW não inclui uma dimensão pai-filho, mas você pode criar
uma artificialmente convertendo a tabela Employee no DSV em uma consulta nomeada na qual você
atribui arbitrariamente funcionários a gerentes. Para fazer isso, clique duas vezes em Wide World
Importers DW.dsv no Solution Explorer para abrir o designer DSV. No painel Tabelas, clique com o
botão direito na tabela Funcionários, aponte para Substituir Tabela e selecione Com Nova Consulta
Nomeada. Na caixa de diálogo Criar Consulta Nomeada, substitua a instrução SELECT pela instrução
mostrada na Listagem 1.1, conforme mostrado na Figura 1.27 , e clique em OK.
SELECIONAR
[Chave do Funcionário],
CASO
QUANDO [ID do funcionário da Primeira Guerra Mundial] >= 3 E [ID do
funcionário da Primeira Guerra Mundial] <= 11 THEN 194
QUANDO [ID do funcionário da Primeira Guerra Mundial] >= 12 E [ID
do funcionário da Primeira Guerra Mundial] <= 15 THEN 203
QUANDO [ID do funcionário da Primeira Guerra Mundial] >= 16 E [ID
do funcionário da Primeira Guerra Mundial] <= 19 THEN 208
QUANDO [ID do funcionário da Primeira Guerra Mundial] = 20 ENTÃO
210
OUTRO NULO
TERMINAR COMO [Chave do gerente],
[ID do funcionário da Primeira Guerra Mundial],
[Funcionário],
[Nome preferido],
[É vendedor]
DE [Dimensão].[Funcionário];
Caixa de diálogo Criar consulta nomeada mostrando uma instrução SELECT para gerar uma
FIGURA 1-27
tabela DSV
Em seguida, crie a dimensão Funcionário no projeto seguindo primeiro as etapas descritas na seção
“Dimensão Desenvolver” anteriormente neste capítulo e depois executando estas etapas:
5. Para observar o efeito dessa alteração, clique com o botão direito do mouse no projeto no
Solution Explorer e selecione Implantar para atualizar o banco de dados multidimensional no
servidor com a nova dimensão.
Ao criar um modelo dimensional pai-filho e definir a propriedade Usage de um atributo como Parent,
você também pode configurar opcionalmente as seguintes propriedades adicionais para esse atributo:
Embora seja possível visualizar o relacionamento entre membros de atributos pai e filho
usando a página Procurar do designer de dimensão, não será possível visualizar o efeito da
modificação da propriedade do atributo MembersWithData até que você adicione a
dimensão ao cubo, certifique-se dos relacionamentos na página Uso da Dimensão do
designer do cubo está correto e processe o cubo. Em seguida, você poderá navegar no cubo
e usar o atributo pai da dimensão em sua consulta para ver seu comportamento.
Por exemplo, você pode digitar * (Gerente) na legenda MembersWithData. Para a consulta
nomeada WideWorldmportersDW no projeto de amostra deste capítulo, as vendas de Archer
como membro pai são o valor agregado das vendas feitas por Archer e Jack e são exibidas
como Archer Lamble. Se você fizer uma busca detalhada, verá as vendas de Archer como um
membro filho exibido como Archer Lamble (Gerente).
NamingTemplate Você usa essa propriedade quando deseja atribuir nomes de nível a cada
nível em uma hierarquia pai-filho, o que é importante quando os usuários navegam no cubo
usando o Excel ou o Power BI. Se você deixar esta propriedade em branco, o SSAS atribuirá
nomes de nível como Nível 01, Nível 02 e assim por diante.
Em uma hierarquia padrão, você define os nomes dos níveis ao criar a hierarquia, conforme
explicado posteriormente neste capítulo na seção “Definir relacionamentos de atributos”. Se
você quiser fornecer um nome para os níveis em uma hierarquia pai-filho, sua única opção é
usar o modelo de nomenclatura.
Uma hierarquia pai-filho não possui um número fixo de níveis e cada ramo da árvore
hierárquica pode ter de zero a muitos níveis diferentes. O segundo nível abaixo de um ramo
não tem necessariamente o mesmo contexto que o segundo nível abaixo de outro ramo. Por
exemplo, na dimensão Funcionário, Archer Lamble é um gerente no primeiro nível abaixo do
membro Todos, e o segundo nível abaixo de Archer inclui Jai Shand, Katie Darwin e Piper
Koch. Digamos hipoteticamente que cada um desses funcionários seja um representante de
atendimento ao cliente. No entanto, outro membro do primeiro nível é Kayla Woodcock e os
membros filhos do segundo nível deste ramo da hierarquia são todos funcionários de
vendas. Portanto, não faz sentido usar um modelo de nomenclatura neste cenário em que o
segundo nível varia de acordo com a filial.
Quando você tem uma hierarquia pai-filho com uma estrutura mais consistente, você pode
usar a propriedade NamingTemplate para definir uma string exclusiva para cada nível da
hierarquia. No nível inferior do modelo, anexe um asterisco ao nome para instruir o SSAS a
adicionar um número que aumenta em 1 para cada nível subsequente quando houver mais
níveis na hierarquia do que níveis nomeados no modelo.
RootMemberIf Você usa essa propriedade para ajudar o SSAS a distinguir membros pais de
membros filhos. Você pode escolher um dos seguintes valores na lista suspensa da
propriedade.
ParentIsBlank Use essa configuração quando quiser que o SSAS considere um membro
como pai somente quando a coluna de atributo pai estiver em branco.
ParentIsSelf Use essa configuração quando quiser que o SSAS defina um pai somente
quando a coluna de atributo pai corresponder ao valor na coluna de atributo chave.
ParentIsMissing Você usa essa configuração quando o SSAS deve identificar um pai
com base em um valor de coluna de atributo pai que não é encontrado em nenhum
lugar da tabela na coluna de atributo chave.
Você pode ver uma descrição dos operadores unários no artigo “Operadores Unários em Dimensões
Pai-Filho” em https://msdn.microsoft.com/en-us/library/ms175417.aspx . Jose Chinchilla fornece um
bom exemplo de uso dessa propriedade em sua postagem no blog “Usando operadores unários para
controlar agregações de hierarquia do Analysis Services”
em https://sqljoe.wordpress.com/2011/09/23/using-unary-operators-to- control-análise-serviços-
hierarquia-agregações/ .
Quando existem vários relacionamentos de chave estrangeira entre uma tabela de fatos e uma tabela
de dimensão, cada relacionamento tem um significado ou função comercial diferente. Para a
dimensão Cliente, a coluna CustomerKey na tabela Venda representa o cliente para quem a venda foi
feita, enquanto a coluna BillToCustomerKey representa o cliente responsável pelo pagamento da
fatura. Para a dimensão Data, a coluna InvoiceDateKey na tabela Venda reflete a data da venda,
enquanto DeliveryDateKey é a data em que o item em estoque foi entregue ao cliente.
Primeiro, adicione as dimensões Cliente e Data ao projeto seguindo as etapas descritas na seção
“Dimensão Desenvolver” anteriormente neste capítulo e, em seguida, execute as seguintes etapas:
1. Configure cada dimensão e seus atributos usando as configurações mostradas na Tabela 1-1.
Para configurar duas colunas para a propriedade KeyColumn do atributo Calendar Month
Label no designer de dimensão, selecione Calendar Month Label no painel Atributos, clique
na caixa KeyColumns na janela Propriedades e clique no botão de reticências. Na caixa de
diálogo Colunas-chave, clique em Rótulo do mês do calendário na lista Colunas-chave e
clique no botão <. Em seguida, clique em Ano civil na lista de colunas disponíveis, clique no
botão >, selecione Número do mês do calendário na lista Colunas disponíveis, clique no
botão > e clique em OK.
Nome
Cliente NomeColuna
Categoria Coluna-chave
Data Coluna-chave
Nome
Data
NomeColuna
2. Em seguida, adicione as dimensões Cliente e Data ao cubo. Clique duas vezes em Wide World
Importers DW.cube e, em seguida, na página Estrutura do Cubo, clique com o botão direito
no espaço em branco no painel Dimensões e selecione Adicionar Dimensão do
Cubo. Enquanto pressiona a tecla CTRL, selecione Cliente e Data e clique em OK.
Observe que, embora você tenha selecionado duas novas dimensões para adicionar ao cubo,
há quatro novas dimensões: Cliente, Cobrança ao Cliente, Data de Entrega e Data da Fatura. O
designer do cubo detectou as características de interpretação das dimensões Cliente e Data
com base nos relacionamentos definidos no DSV. Se você verificar as definições de
relacionamento na guia Uso da Dimensão, poderá ver que os atributos de granularidade de
cada nova dimensão correspondem corretamente a uma coluna separada na tabela do grupo
de medidas.
Quando você tem uma dimensão de roleplaying, há apenas um arquivo .dim no projeto,
conhecido como dimensão de banco de dados , mas você tem múltiplas dimensões no cubo,
que são conhecidas como dimensões de cubo .
3. Depois de implementar o projeto para atualizar o servidor com as alterações (e clicar em Sim
para confirmar a substituição do banco de dados, se necessário), abra a guia Navegador no
designer de cubo.
Sempre que você processa o banco de dados, seja iniciando a operação no SSDT ou iniciando
a operação no SSMS ou SSIS, todas as conexões do cliente são desconectadas. Não faz mal
nenhum clicar no botão Reconectar se você já estiver conectado, mas é uma etapa obrigatória
após o processamento. Portanto, você deve desenvolver o hábito de usar o botão Reconectar
ao abrir a guia Navegador do designer de cubo para garantir que sua conexão esteja ativa.
7. Você pode então alterar a consulta para testar a dimensão de interpretação Faturar ao
cliente. Arraste a coluna Cliente da janela de consulta para o lado esquerdo da tela.
Um modelo de dimensão de referência é útil quando você deseja analisar medidas por uma dimensão
para a qual não existe um relacionamento diretamente na tabela de fatos. Em vez disso, a tabela de
factos tem uma relação com outra dimensão, que também tem uma relação com a dimensão de
referência. Como exemplo, precisamos considerar como modelar o banco de dados multidimensional
se o banco de dados WideWorldImportersDW não tivesse a dimensão de roleplaying para Bill To
Customer e, em vez disso, tivesse uma tabela de dimensão separada para referenciá-lo. A Figura 1-
32 mostra uma estrutura hipotética no banco de dados de exemplo se ele fosse projetado para usar
uma dimensão de referência para Faturar ao Cliente em vez de incluir seu relacionamento
diretamente.
FIGURA 1-32 Tabelas de origem para um modelo de dimensão de referência
Você pode simular essa estrutura no projeto criando um segundo DSV e, em seguida, criando um
cubo baseado no novo DSV seguindo estas etapas:
1. Clique com o botão direito na pasta Data Source Views, selecione New Data Source View,
clique em Next, selecione a fonte de dados Wide World Importers DW, clique em Next duas
vezes, digite WWI DW Alt na caixa Name e clique em Finish.
2. Clique com o botão direito na janela DSV, selecione Nova Consulta Nomeada, digite Sale
Alt na caixa Nome e substitua a instrução SELECT pela instrução na Listagem 1-2.
SELECIONAR
[Chave de venda],
[Chave da cidade],
[Chave do Cliente],
[Chave do item em estoque],
[Chave da data da fatura],
[Chave da data de entrega],
[Chave do Vendedor],
[ID da fatura da Primeira Guerra Mundial],
[Descrição],
[Pacote],
[Quantidade],
[Preço unitário],
[Taxa de imposto],
[Total sem impostos],
[Valor do imposto],
[Lucro],
[Total incluindo impostos],
[Total de itens secos],
[Total de itens do resfriador]
DE [Fato].[Venda];
3. Clique com o botão direito novamente no DSV, selecione New Named Query, digite Customer
Alt na caixa Name e substitua a instrução SELECT pela instrução na Listagem 1-3.
SELECIONAR
c1.[Chave do Cliente],
c2.[Chave do cliente] como [Chave de cobrança do cliente],
c1.[ID do cliente da Primeira Guerra Mundial],
c1.Cliente,
c1.Categoria,
c1.[Grupo de Compra]
DE [WideWorldImportersDW].[Dimensão].[Cliente] c1
LEFT OUTER JOIN [WideWorldImportersDW].[Dimensão].[Cliente] c2
ON c1.[Cobrança ao Cliente] = c2.[Cliente];
4. Clique com o botão direito mais uma vez no DSV, selecione New Named Query, digite Bill To
Customer na caixa Name e substitua a instrução SELECT pela instrução na Listagem 1.4.
SELECIONAR
[Chave do cliente] COMO [Chave de cobrança do cliente],
[Cliente] AS [Faturar para o cliente]
DE [Dimensão].[Cliente]
ONDE
[Chave do Cliente] em (1, 202);
5. A seguir, defina chaves primárias lógicas para cada consulta nomeada. Para isso, clique com o
botão direito em Sale Key na consulta nomeada Sale Alt e selecione Definir chave lógica
primária. Repita esta etapa para a Chave do Cliente na consulta nomeada Alt do Cliente e a
Chave do Cliente para Faturamento na consulta nomeada Faturar para o Cliente.
6. Em seguida, crie um relacionamento entre Sale Alt e Customer Alt selecionando Customer Key
em Sale Alt e arrastando-o para Customer Key em Customer Alt. Repita esse processo para
criar um relacionamento entre a chave Bill To Customer na consulta nomeada Alt do cliente e
a chave Bill To Customer na consulta nomeada Bill To Customer.
Nome
NomeColuna
Alt do cliente
Categoria Coluna-chave
Nome
NomeColuna
8. Em seguida, crie um cubo baseado no novo DSV. Clique com o botão direito na pasta Cubos,
selecione Novo Cubo, clique em Avançar duas vezes, selecione WWI DW Alt na lista suspensa
Visualização da Fonte de Dados, marque a caixa de seleção Venda Alt, clique em Avançar,
desmarque a caixa de seleção Medir, selecione Contagem Alt de Venda, clique em Avançar
duas vezes, desmarque a caixa de seleção Venda Alt na página Selecionar Novas Dimensões,
clique em Avançar, digite Cubo de Dimensão de Referência na caixa Nome do Cubo e clique
em Concluir.
Embora a dimensão Faturar ao cliente tenha sido listada em Selecionar dimensões existentes,
por estar no mesmo DSV que o grupo de medidas Venda Alt, ela não é adicionada
automaticamente como uma dimensão de cubo. Não existe nenhum relacionamento direto
entre as consultas nomeadas Sale Alt e Bill To Customer no DSV. No entanto, você pode
adicionar a dimensão ao cubo manualmente como uma dimensão de referência.
9. Clique com o botão direito dentro do painel Dimensões na página Estrutura do Cubo do
designer de cubo, selecione Adicionar Dimensões do Cubo, selecione Faturar ao Cliente e
clique em OK.
10. Clique na guia Uso da dimensão, clique na interseção da célula entre a dimensão Faturar ao
cliente e o grupo de medidas Venda Alt, clique no botão de reticências que aparece, selecione
Referenciado na lista suspensa Selecionar tipo de relacionamento, selecione Cliente Alt na
lista suspensa Dimensão intermediária lista suspensa, selecione Faturar ao cliente na lista
suspensa Atributo de dimensão de referência e selecione Chave de faturar ao cliente na lista
suspensa Atributo de dimensão intermediária, conforme mostrado na Figura 1-33 . Clique OK.
Caixa de diálogo Definir relacionamento mostrando a configuração de um
FIGURA 1-33
relacionamento referenciado
11. Implante o projeto clicando com o botão direito no projeto no Solution Explorer e
selecionando Implantar.
12. Clique na guia Navegador no designer de cubo, expanda Medidas, expanda a pasta Sale Alt e
arraste Sale Alt Count para a janela de consulta. Em seguida, expanda Bill To Customer e
arraste Bill To Customer para a janela de consulta, conforme mostrado na Figura 1.34 .
Painel de metadados e janela de consulta na página Navegador do designer de
FIGURA 1-34
cubo mostrando contagens de vendas por cobrança ao cliente
Idealmente, quando você estiver no controle da modelagem dimensional das tabelas de origem,
inclua uma coluna de chave estrangeira para cada dimensão e não dependa de uma tabela
intermediária como faz com o modelo de dimensão de referência. Uma abordagem alternativa é
consolidar os dados em uma única tabela desnormalizada. Devido ao potencial de degradação do
desempenho durante o processamento ou consulta, uma implementação de modelo de dimensão de
referência não é recomendada como prática recomendada.
Para obter informações adicionais sobre a possibilidade de materializar uma dimensão de referência,
consulte “SSAS: Reference materialized dimension could produz incorrect results” por Alberto Ferrari
em http://sqlblog.com/blogs/alberto_ferrari/archive/2009/02/25/ssas -referência-dimensão-
materializada-pode-produzir-resultados-incorretos.aspx .
Você pode aproveitar as vantagens do mecanismo de mineração de dados integrado ao SSAS para
criar uma nova dimensão pela qual você pode analisar dados. Uma abordagem de implementação
comum é usar o algoritmo de clustering para usar dados demográficos e outros dados para agrupar
clientes em clusters e, em seguida, adicionar os clusters como uma dimensão ao seu cubo onde você
pode dividir seus dados por clusters.
Você pode encontrar um ponto de partida para aprender mais sobre esse assistente em
“Assistente de mineração de dados (Analysis Services – Data Mining)
em https://msdn.microsoft.com/en-us/library/ms175645.aspx .
8. Na página Concluindo o Assistente, mantenha a caixa de seleção Criar Dimensão do Modelo
de Mineração selecionada, digite Clusters de Clientes na caixa de texto à direita desta caixa de
seleção, selecione a dimensão Criar Cubo Usando o Modelo de Mineração, conforme
mostrado na Figura 1-36 , e em seguida, clique em Concluir.
9. Clique com o botão direito no projeto no Solution Explorer e selecione Implantar para
implantar as atualizações no servidor e processo SSAS.
10. Clique duas vezes no arquivo Wide World Importers DW_DM.cube no Solution Explorer,
clique na guia Navegador no designer de cubo, expanda a pasta Medidas, expanda a pasta
Venda e arraste Lucro para a janela de consulta. Em seguida, expanda a pasta Customer
Clusters e arraste MiningDimensionContentNodes para a janela de consulta para visualizar o
detalhamento das vendas por cluster. Quando você usa dados mais realistas do que
WideWorldImportersDW, é provável que mais clusters estejam disponíveis para análise.
Para visualizar as características de cada cluster, clique duas vezes no arquivo Customer.dmm no
Solution Explorer e clique na guia Mining Model Viewer. Aqui você pode alternar entre as guias
Diagrama de Cluster, Perfis de Cluster, Características de Cluster e Discriminação de Cluster para
explorar visualizações, estatísticas e outras informações sobre os clusters criados pelo algoritmo de
mineração de dados. Você não foi testado quanto ao uso do visualizador de modelo de mineração de
dados no exame, mas pode aprender mais sobre como usá-lo em “Procurar um modelo usando o
Microsoft Cluster Viewer” em https://msdn.microsoft.com/en-us /library/ms174801.aspx .
Este tipo de modelagem é comum em análises bancárias em que uma única conta bancária pode ser
associada a vários correntistas e, portanto, uma transação em uma tabela de fatos tem um
relacionamento muitos-para-muitos com os correntistas. A indústria médica também exige
frequentemente modelagem muitos-para-muitos. Por exemplo, um paciente pode ter vários
diagnósticos, portanto, um evento como uma internação hospitalar pode ser associado a vários
membros em uma dimensão de diagnóstico.
Como resultado da implementação desse tipo de modelo, é possível acumular valores agregados em
uma dimensão por diferentes membros sem sobrecontar valores. Digamos que em um cubo simples
você tenha uma conta bancária com dois correntistas e a conta tenha um saldo de $ 100. Se você
consultar os saldos de todos os titulares de contas, o SSAS listará cada titular de conta separadamente
com o saldo de US$ 100, mas o valor agregado para todos os titulares de contas será de US$ 100. O
SSAS sabe como associar as linhas de fatos individualmente a cada membro da dimensão, mas
também calcula corretamente os valores agregados da dimensão.
Antes de poder implementar um modelo de dimensão muitos para muitos no SSAS, você precisa
estruturar suas tabelas de origem ou DSV adequadamente. Nada nas tabelas de origem
WideWorldImportersDW se presta a esse tipo de modelagem, portanto, vamos configurar um cenário
simples no qual uma nova dimensão contém motivos de vendas. Os motivos de vendas descrevem
por que um cliente fez uma compra e são capturados em uma pesquisa realizada no momento da
compra. Qualquer transação de venda pode estar associada a zero ou muitos motivos de vendas. Para
modelar esse cenário, você precisa adicionar uma nova dimensão Motivo de Vendas e uma Ponte de
Motivo de Vendas para associar transações de vendas da tabela Venda aos motivos de vendas na
nova dimensão, conforme mostrado na Figura 1.37 .
FIGURA 1-37 Tabelas de origem para um modelo de dimensão muitos para muitos
1. Crie uma consulta nomeada como origem para a dimensão Motivo de Vendas. Para fazer isso,
clique duas vezes em Wide World Importers DW.dsv no Solution Explorer para abrir o
designer DSV.
2. No painel do diagrama, clique com o botão direito em qualquer lugar do painel do diagrama
e selecione Nova Consulta Nomeada.
3. Na caixa de diálogo Criar Consulta Nomeada, digite Motivo de Venda na caixa Nome,
substitua a instrução SELECT pela instrução mostrada na Listagem 1.5 e clique em OK.
5. Agora crie uma tabela ponte para definir o relacionamento entre a tabela de fatos e a nova
dimensão. No painel do diagrama do DSV, clique com o botão direito em qualquer lugar e
selecione Nova Consulta Nomeada.
6. Na caixa de diálogo Criar Consulta Nomeada, digite Sales Reason Bridge na caixa Nome,
substitua a instrução SELECT pela instrução mostrada na Listagem 1-6 e clique em OK.
SELECIONAR
CAST(1 AS bigint) AS [Chave de Venda],
1 AS SalesReasonKey
UNIÃO
SELECIONAR
CAST(1 AS bigint) AS [Chave de Venda],
2 AS SalesReasonKey
UNIÃO
SELECIONAR
CAST(1 AS bigint) AS [Chave de Venda],
3 AS SalesReasonKey
UNIÃO
SELECIONAR
CAST(2 AS bigint) AS [chave de venda],
1 AS SalesReasonKey;
7. Selecione a coluna Chave de venda na tabela Ponte de motivo de vendas e arraste-a para a
coluna Chave de venda na tabela Venda para definir um novo relacionamento.
8. Repita a etapa anterior para criar um relacionamento entre SalesReasonKey na tabela Sales
Reason Bridge e a coluna SalesReasonKey na tabela Sales Reason.
11. Clique duas vezes em Wide World Importers DW.cube no Solution Explorer para abrir o
designer de cubo.
12. Clique com o botão direito no painel Dimensão na página Estrutura do Cubo, selecione
Adicionar Dimensão do Cubo, selecione Motivo de Vendas e clique em OK.
13. Clique com o botão direito no painel Medidas, selecione Novo Grupo de Medidas e selecione
Ponte de Motivo de Vendas para adicionar a tabela de ponte ao cubo.
14. Expanda a pasta Sales Reason Bridge no painel Medidas, selecione Sales Reason Bridge Count
e, em seguida, na janela Propriedades, selecione False na lista suspensa Visível.
15. Abra a página Uso da Dimensão do designer de cubo. Observe que as dimensões Fatura e
Motivo de Vendas têm um relacionamento regular com o grupo de medidas Ponte Motivo de
Vendas.
16. Para configurar o relacionamento muitos para muitos, clique na interseção entre Motivo de
Vendas e Venda, clique no botão de reticências, selecione Muitos para Muitos na lista
suspensa Selecionar Tipo de Relacionamento, selecione Ponte do Motivo de Vendas no Grupo
de Medidas Intermediárias lista suspensa, conforme mostrado na Figura 1-38 , e clique em
OK.
17. Implemente o projeto e, em seguida, abra a página Navegador do designer de cubo e clique
em Reconectar na barra de ferramentas.
18. No menu Cubo, selecione Analisar no Excel. Clique em Habilitar na caixa de mensagem Aviso
de segurança da Microsoft.
19. Na lista Campos da Tabela Dinâmica, arraste a caixa de seleção Faturas para o painel Filtros
abaixo da lista.
20. Na tabela dinâmica, abra a lista suspensa, marque a caixa de seleção Selecionar vários itens,
desmarque a caixa de seleção Todos, expanda Tudo e marque as caixas de seleção 1 e 2.
21. Na lista Campos da tabela dinâmica, marque a caixa de seleção Contagem de vendas e
observe que a tabela dinâmica exibe um total de 3.
22. Na lista Campos da Tabela Dinâmica, marque a caixa de seleção Fatura e observe que há duas
faturas, 1 e 2. A Fatura 1 tem uma contagem de vendas de 1 e a Fatura 2 tem uma contagem
de vendas de 2.
23. Agora selecione Motivo de vendas na lista Campos da tabela dinâmica. Um segundo nível é
adicionado à tabela dinâmica na qual há três motivos de vendas para a Fatura 1, cada um
com uma contagem de vendas de 1: Valor, Fabricante e Vendedor. A fatura 2 tem um motivo
de vendas, Valor, com uma contagem de vendas de 1. Observe que o total permanece 3,
apesar das quatro instâncias de motivos de vendas na tabela dinâmica terem uma contagem
de vendas de 1. As contagens de vendas não são contabilizadas a mais, mesmo quando um o
relacionamento muitos para muitos está presente nas dimensões da consulta.
Você pode encontrar uma cobertura completa dos desafios com modelagem dimensional muitos para
muitos e soluções potenciais em “Many to Many Revolution 2.0” de Marco Russo e Alberto Ferrari,
disponível para download em http://www.sqlbi.com/articles/ muitos2muitos/ .
Conforme explicado na seção “Design de tabela de origem” na Habilidade 1.1, “Criar um banco de
dados multidimensional usando Microsoft SQL Server Analysis Services (SSAS)”, existem dois tipos de
tabelas SCD que você pode projetar e depois adicionar ao seu DSV—Tipo 1 para o qual você não
rastreia alterações históricas e Tipo 2 para o qual você rastreia alterações históricas. Ao usar o design
SCD Tipo 1, você não precisa executar nenhuma tarefa adicional no DSV ou no design de dimensão,
embora deva estar ciente do efeito das alterações de dados durante o processamento, conforme
explicado no Capítulo 4, que por sua vez pode influenciar como você configura relacionamentos de
atributos conforme descrito posteriormente nesta habilidade. Por outro lado, ao usar o design SCD
Tipo 2, há algumas tarefas específicas que você deve executar no design da dimensão para suportar a
capacidade de navegar tanto pela versão atual quanto pela versão histórica dos atributos da
dimensão.
A primeira tarefa é garantir que o design da tabela SCD Tipo 2 inclua colunas para suportar
dimensões que mudam lentamente, conforme descrito na Habilidade 1.1. Ou seja, você deve ter uma
chave substituta, uma chave comercial, colunas de histórico de SCD e pelo menos um atributo cujos
valores mudam ao longo do tempo e cujo histórico você deseja preservar.
A tabela de itens de estoque no Wide World Importers DW DSV atende a esses critérios; então vamos
adicioná-lo ao projeto como uma dimensão que muda lentamente, seguindo as etapas descritas na
seção “Dimensão de desenvolvimento” anteriormente neste capítulo e, em seguida, executando estas
etapas:
1. No Assistente de Dimensão, use Item de Estoque como Tabela Principal, defina Chave de Item
de Estoque como Coluna Chave e defina Item de Estoque como Coluna de Nome.
3. Seu próximo conjunto de tarefas é alterar as propriedades da chave substituta e dos atributos
da chave comercial. Primeiro, renomeie a chave do item em estoque como histórico do item
em estoque e o ID do item em estoque da Primeira Guerra Mundial como item em estoque.
5. Por último, adicione a dimensão a um cubo. No Solution Explorer, clique duas vezes em Wide
World Importers DW.cube, clique com o botão direito dentro do painel Dimensões na página
Estrutura do Cubo do designer de cubo, selecione Adicionar Dimensão do Cubo, selecione
Item de Estoque e clique em OK. O uso da dimensão é definido corretamente por padrão com
um relacionamento regular devido ao relacionamento definido entre a tabela de fatos Venda
e a tabela de dimensões Item em estoque, portanto, nenhuma configuração adicional é
necessária.
6. Não há dados nas vendas DW dos Importadores Mundiais para ilustrar adequadamente o
efeito das mudanças no SCD, então execute a instrução mostrada na Listagem 1-7 para
adicionar uma nova venda usando a chave substituta para um item de estoque atual.
INSERIR EM [Fato].[Venda]
([Chave da cidade],
[Chave do Cliente],
[Chave de cobrança ao cliente],
[Chave do item em estoque],
[Chave da data da fatura],
[Chave da data de entrega],
[Chave do Vendedor],
[ID da fatura da Primeira Guerra Mundial],
[Descrição],
[Pacote],
[Quantidade],
[Preço unitário],
[Taxa de imposto],
[Total sem impostos],
[Valor do imposto],
[Lucro],
[Total incluindo impostos],
[Total de itens secos],
[Total de itens do resfriador],
[Chave de Linhagem])
VALORES
(0,
0,
0,
604,
'31/05/2016',
'31/05/2016',
0,
70511,
'Lançador de foguetes USB (cinza)',
'Cada',
1000,
25,
15,
25.000,
3750,
15.500,
28750,
1000,
0,
11);
IR
7. Implante o projeto para ver como o design do SCD afeta os resultados da consulta. Clique
com o botão direito do mouse no projeto no Solution Explorer, selecione Implantar e clique
em Sim para substituir o banco de dados no servidor.
10. Em seguida, expanda Item de estoque na árvore de metadados. Este nó Item de estoque de
nível superior representa a dimensão indicada pelo ícone contendo um cubo e setas
apontando em três direções. Abaixo dele está outro nó Item de estoque, que é um atributo
indicado pelo conjunto de quadrados azuis dispostos em formato retangular.
11. Arraste o atributo Item de estoque para a janela de consulta e, em seguida, arraste a borda
direita do cabeçalho da coluna para a direita para ampliar a coluna e obter melhor visibilidade
do nome de cada item de estoque, conforme mostrado na Figura 1.39 . Observe que a
contagem atual do USB Rocket Launcher (cinza) é 1.079.
Painel de metadados e janela de consulta na página Navegador do designer de
FIGURA 1-39
cubo mostrando contagens de vendas por item de estoque
12. Se você arrastar o atributo Cor para a janela de consulta, verá que a contagem de vendas é
1.078 para a cor histórica Cinza e 1 para a cor atual Cinza Aço. O atributo Item de estoque é
um agregado de todas as informações históricas, mas você também pode visualizar as
informações históricas do atributo Cor em alteração ao adicioná-lo à consulta.
13. Agora arraste o cabeçalho da coluna Item de Estoque da janela de consulta para a esquerda
para removê-lo da consulta e, em seguida, arraste Histórico de Itens de Estoque do painel de
metadados para a janela de consulta. Solte-o à esquerda da coluna Cor.
14. Em seguida, filtre a consulta para localizar mais facilmente o item de estoque na consulta
anterior. Para fazer isso, selecione Item de estoque na lista suspensa Dimensão acima da
janela de consulta e selecione Histórico de item de estoque na lista suspensa Hierarquia.
15. Na lista suspensa Operador, selecione Começa com. Na caixa Filter Expression, digite USB
Rocket Launcher e pressione Enter. Em seguida, remova a coluna Cor. Agora você vê dois itens
de estoque com o mesmo nome, como mostrado na Figura 1.40 , porque esses dois membros
de dimensão têm chaves substitutas separadas e cada chave substituta aparece em uma ou
mais linhas na tabela de fatos.
Painel de metadados e janela de consulta na página Navegador do designer de
FIGURA 1-40
cubo mostrando contagens de vendas por histórico de itens de estoque
Ao incluir o atributo Cor na consulta, você pode ver que cada membro do Histórico de itens
de estoque corresponde a uma cor diferente. No entanto, quando a Cor não é incluída na
consulta, a aparência de duas linhas separadas nos resultados da consulta pode confundir os
usuários corporativos. Por esse motivo, uma abordagem de design comum para modelar
SCDs é ocultar o atributo associado à chave substituta para que os usuários corporativos não
possam usá-lo acidentalmente em uma consulta ao explorar o cubo.
16. Nesse caso, você pode ocultar o atributo Histórico de itens de estoque retornando ao
designer de dimensão Item de estoque, selecionando Histórico de itens de estoque no painel
Atributos e alterando a propriedade AttributeHierarchyVisible na janela Propriedades para
False.
17. Depois de implementar o projeto, você pode reconectar-se ao cubo na página Navegador do
designer de cubo e confirmar se o atributo Histórico de itens de estoque não aparece mais no
painel de metadados, conforme mostrado na Figura 1-41 .
Painel Metadados na página Navegador do designer de cubo mostrando os
FIGURA 1-41
atributos da dimensão Item de estoque após ocultar o atributo chave
Se você tiver uma dimensão grande, a abordagem de modelagem descrita aqui poderá resultar
potencialmente em um desempenho de consulta insatisfatório. Uma maneira de mitigar esse possível
problema é adicionar uma hierarquia definida pelo usuário e configurar relacionamentos de atributos
adequadamente, conforme descrito na seção “Definir relacionamentos de atributos” posteriormente
neste capítulo.
Cada dimensão possui uma propriedade Type que é definida por padrão como Regular. Em geral,
quando a propriedade não está definida como Regular, a configuração Tipo instrui o servidor SSAS, o
aplicativo cliente ou o servidor e o aplicativo cliente sobre como executar determinados tipos de
cálculos para aliviar a necessidade de criar membros calculados complexos, personalizados fórmulas
de rollup ou scripts MDX. Normalmente, você também deve definir uma propriedade Type para um
ou mais atributos na dimensão para configurar o comportamento desejado.
Você pode escolher entre os seguintes valores de Tipo para definir o comportamento de cálculo
aplicável para uma dimensão:
BillOfMaterials (BOM) Organiza uma dimensão por atributos que definem como as peças
compõem uma unidade e exige que você defina atributos como unidade organizacional,
recurso de BOM e quantitativo. Um aplicativo cliente controla como essas informações
orientam o comportamento da dimensão.
Canal Representa informações do canal e requer um aplicativo cliente para determinar como
essas informações são usadas.
Clientes Organiza atributos para obter informações sobre clientes, como nome, endereço,
detalhes demográficos e muito mais. Você deve usar um aplicativo cliente que suporte esse
tipo de dimensão para ver a mudança de comportamento.
Geografia Requer que um aplicativo cliente defina o comportamento da dimensão, como a
exibição de dados agregados projetados em uma visualização geográfica. Este tipo de
dimensão contém atributos para áreas geográficas, como código postal, cidade ou país.
Organização Define uma dimensão que contém atributos sobre organizações subsidiárias,
percentagens de propriedade e percentagens de direitos de voto. Um aplicativo cliente
controla como essas informações afetam os cálculos ou o comportamento da dimensão em
um aplicativo.
Produtos Organiza uma dimensão por atributos que descrevem características das peças,
como cor, tamanho, categoria e assim por diante. Este tipo de dimensão requer que um
aplicativo cliente use essas informações.
Quantitativo Requer um aplicativo cliente que possa usar atributos contendo valores
quantitativos.
Taxas Define a dimensão que contém informações de taxa de moeda que o servidor SSAS usa
para conversões de moeda em conjunto com o tipo de dimensão Moeda. Consulte o recurso
adicional recomendado para o tipo de dimensão Moeda para saber como usar esse tipo de
dimensão corretamente.
Cenário Identifica uma dimensão que contém atributos para definir um cenário, como
orçamento ou previsão, e uma versão.
Utilitário Sinaliza uma dimensão para uma finalidade a ser definida por um aplicativo cliente.
A implementação mais comum de um tipo de dimensão diferente do padrão Regular é definir uma
dimensão Data como um tipo de dimensão Tempo. Vamos adicionar alguns atributos adicionais a
esta dimensão e depois explorar a configuração adicional necessária na dimensão para alcançar os
resultados desejados.
Para definir a propriedade Tipo da dimensão Data, clique duas vezes no arquivo Date.dim no Solution
Explorer, clique no nome da dimensão (o nó de nível superior) no painel Atributos do designer de
dimensão e selecione Hora no menu suspenso Tipo. lista abaixo na janela Propriedades. Você também
deve configurar cada atributo com o tipo aplicável selecionando o atributo no painel Atributos e
selecionando o valor correto, mostrado na Tabela 1-3, na lista suspensa Tipo. Ao navegar pela lista de
valores na lista suspensa Tipo, você deve expandir os nós dentro de uma categoria de tipo para
localizar o tipo desejado. Por exemplo, você pode expandir Data e Calendário para localizar Meses
(mostrados na tabela como Data/Calendário/Meses) ou expandir ISO para localizar
Iso8601WeekOfYear. Além disso, altere a propriedade Name de cada atributo se estiver incluído na
Tabela 1-3.
Dica de exame
Cada nível de uma hierarquia corresponde a um atributo separado na dimensão. Por exemplo, na
hierarquia mostrada na Figura 1.42 , o nível superior da hierarquia é o atributo Ano Civil, o nível
intermediário é o atributo Mês Calendário e o nível inferior é o atributo Data.
Depois de criar uma hierarquia, talvez você também precise definir relacionamentos de atributos entre
cada nível da hierarquia. Os relacionamentos de atributos determinam como o SSAS calcula valores
agregados dentro de um cubo e como armazena dados em disco. Por esse motivo, a presença ou
ausência de relacionamentos de atributos afeta potencialmente o desempenho da consulta.
Antes de poder trabalhar com relacionamentos de atributos, você deve primeiro criar uma
hierarquia. Para fazer isso para a dimensão Data, execute as seguintes etapas:
1. Abra o designer de dimensão para Data, arraste o atributo Ano Civil do painel Atributos para
o painel Hierarquias do designer. Ao descartá-lo, uma nova hierarquia é criada.
2. Você pode então adicionar níveis à nova hierarquia arrastando o atributo Mês Calendário
para o objeto de hierarquia abaixo do atributo Ano Calendário e repetindo esse processo com
o atributo Data.
3. Clique com o botão direito na legenda Hierarquia da nova hierarquia no painel Hierarquias,
selecione Renomear e digite Calendário para renomeá-la.
4. Você pode criar quantas hierarquias desejar. Tecnicamente falando, você pode criar apenas
2.147.483.647 hierarquias definidas pelo usuário, mas provavelmente não precisará de tantas!
5. Por enquanto, crie outra hierarquia renomeada como Calendário ISO usando os atributos Ano
Civil, Número da Semana ISO e Data, conforme mostrado na Figura 1.43 .
FIGURA 1-43 Hierarquias definidas pelo usuário na dimensão Data
O nome da hierarquia deve ser exclusivo dentro da dimensão, não apenas em relação a outras
hierarquias, mas também não pode entrar em conflito com nomes de atributos na mesma dimensão.
Observe o ícone de aviso e o aviso de práticas recomendadas indicado pelo sublinhado ondulado
abaixo de cada nome de hierarquia para indicar um possível problema. Se você passar o cursor sobre
cada aviso, a seguinte mensagem será exibida: “Não existem relacionamentos de atributos entre um
ou mais níveis desta hierarquia. Isso pode resultar na diminuição do desempenho da consulta.” Este é
um aviso muito comum.
Os avisos de hierarquia na página Estrutura da Dimensão são exibidos porque o Ano Civil faz parte de
ambas as hierarquias, mas não se conecta diretamente ao atributo no nível filho em nenhuma das
hierarquias. A dimensão pode ser processada com êxito nesse estado, mas a mensagem de aviso
alerta que pode haver um impacto adverso no desempenho da consulta. Com esse banco de dados, o
volume de dados é muito pequeno para que você perceba um desempenho lento da
consulta. Entretanto, quando você começa a trabalhar com tabelas de fatos com milhões ou bilhões
de linhas, o problema de desempenho se torna mais perceptível.
Antes de decidir se precisa corrigir esse aviso específico, você deve saber que tipo de hierarquia
criou. Uma hierarquia natural é uma hierarquia na qual cada atributo tem um relacionamento um-
para-muitos entre os membros da dimensão no nível pai e os membros da dimensão no nível filho,
conforme mostrado na Figura 1.45 . Na dimensão Data, a hierarquia Calendário é uma hierarquia
natural porque cada membro Mês Civil corresponde a um e somente um membro no nível Ano Civil.
É certo que, numa dimensão relativamente pequena como a Data, a diferença no desempenho da
consulta com ou sem uma hierarquia natural é insignificante. Contudo, em grandes dimensões, a
existência de relações precisas de atributos tem um impacto mensurável no desempenho.
Além disso, quando existem relacionamentos de atributos, o SSAS pode projetar e armazenar
agregações que também contribuem para consultas mais rápidas. Você aprenderá como trabalhar
com agregações para melhorar o desempenho da consulta no Capítulo 4.
Por outro lado, uma hierarquia não natural é aquela em que existe o potencial de haver um
relacionamento muitos-para-muitos entre membros nos níveis pai e filho. Para criar uma hierarquia
não natural, abra o designer de dimensão Item de estoque e crie uma hierarquia chamada Cor-
Tamanho com Cor como o nível superior e Tamanho como o nível inferior. A Figura 1.46 ilustra os
resultados parciais dessas combinações de atributos em uma hierarquia.
Você usa uma hierarquia não natural para permitir que os usuários relatem combinações de membros
de dimensão que não são hierárquicos. Dessa forma, você pode incorporar em seu banco de dados
multidimensional a capacidade de produzir o mesmo resultado de uma consulta relacional que
agrega a quantidade vendida e agrupa o valor agregado por duas colunas diferentes e não
hierárquicas, conforme mostrado na Listagem 1.8.
USE WideWorldImportersDW;
IR
SELECIONAR
Cor,
Tamanho,
SOMA(Quantidade) AS QuantidadeVendida
DE Fatos.Vendas
Dimensão INNER JOIN.[Item de estoque] si
ON s.[Chave do item em estoque] = si.[Chave do item em estoque]
Agrupar por
Cor,
Tamanho;
Se você revisar os relacionamentos de atributos de uma hierarquia não natural, como mostrado
na Figura 1.47 , poderá ver que não há nenhuma seta conectando os atributos do nível da
hierarquia. Em vez disso, o atributo de cada nível está relacionado ao atributo principal, Histórico de
itens em estoque. No caso de uma hierarquia não natural, esta falta de relações de atributos entre os
atributos da hierarquia é apropriada.
Sempre que você vir o aviso sobre relacionamentos de atributos inexistentes entre níveis de
hierarquia, você deverá avaliar se a hierarquia é natural ou não. Se for natural, você deverá corrigir os
relacionamentos de atributos, mas poderá ignorar o aviso se a hierarquia não for natural. No entanto,
você deve testar se o desempenho das consultas que usam a hierarquia não natural é aceitável. Caso
contrário, considere modificar a estrutura da dimensão para transformar a hierarquia não natural em
uma hierarquia natural.
Digamos que você queira otimizar as hierarquias naturais, Calendário e Calendário ISO, corrigindo os
relacionamentos de atributos. Para fazer isso, execute as seguintes etapas:
2. Para ver os resultados causados por esse problema, implante o projeto. A implantação falha
devido ao seguinte aviso exibido na janela Saída: “Erros no mecanismo de armazenamento
OLAP: Uma chave de atributo duplicada foi encontrada durante o processamento: Tabela:
'Dimension_Date', Coluna: 'ISO_x0020_Week_x0020_Number', Valor: '15'. O atributo é
'Número da semana ISO'.”
5. Realce toda a instrução SELECT e pressione CTRL+C para copiar a instrução para a área de
transferência. Clique em Fechar três vezes para fechar todas as caixas de diálogo abertas.
SELECIONAR
DISTINTO
[Dimension_Date].[Número da semana ISO] AS
[Dimensão_DataISO_x0020_Semana_x0020_Número0_0],
[Dimension_Date].[Etiqueta do ano civil] AS
[Dimension_DateCalendar_x0020_Year_x0020_Label0_1]
DE [Dimensão].[Data] AS [Dimensão_Data]
ORDER BY [Dimension_Date].[Número da semana ISO];
Como você pode ver pelos resultados parciais mostrados na Figura 1-50 , cada valor de Número de
Semana ISO na primeira coluna corresponde a quatro valores diferentes de Ano Civil na segunda
coluna. Devido ao relacionamento de atributos que existe entre o Número da Semana ISO e o Ano
Civil, pode haver apenas um membro pai do Ano Civil para cada membro filho do Número da Semana
ISO. Caso contrário, o processamento da dimensão falhará.
FIGURA 1-50 Resultados da consulta que preenche o atributo ISO Week Number
Uma maneira fácil de corrigir esse problema é modificar a coluna-chave do atributo Número da
semana ISO para criar um valor exclusivo para cada combinação Número da semana ISO-Ano
civil. Para fazer isso, execute as seguintes etapas:
2. Na caixa de diálogo Colunas-chave, clique em Ano civil na lista de colunas disponíveis, clique
no botão >, selecione Ano civil na lista Colunas-chave, clique no botão Acima para colocar o
ano civil à frente do número da semana ISO na lista e clique em OK .
4. Por último, implante o projeto para atualizar o banco de dados multidimensional no servidor
com suas alterações.
Sua outra opção é definir esta propriedade como Rígida. Nesse caso, qualquer alteração no
relacionamento entre um atributo e um atributo relacionado exigirá o processamento
completo da dimensão. Você usa essa opção quando espera que os relacionamentos entre
atributos raramente ou nunca mudem, como a atribuição de uma data a um mês, ou quando
espera que os valores raramente mudem. A data 01/01/2013 sempre permanece filha de
CY2013-Jan e nunca é reatribuída para CY2013.
Você altera o valor para Um quando deseja especificar um relacionamento um-para-um. Por
exemplo, se você tivesse um atributo para número de telefone na dimensão Cliente, definiria
o relacionamento entre esse atributo e o atributo Cliente definindo a propriedade
Cardinalidade como um.
Nome Fornece um nome exclusivo para o relacionamento. Esse valor é padronizado como o
nome do atributo pai.
Visível Determina se um aplicativo cliente pode acessar o atributo pai como uma propriedade
de membro em uma consulta MDX. Trabalhar com propriedades de membros é descrito com
mais detalhes no Capítulo 3.
Embora escrito para SQL Server 2012 e 2014, você pode encontrar recomendações de ajuste de
desempenho relacionadas a relacionamentos de atributos no “Analysis Services MOLAP Performance
Guide for SQL Server 2012 and 2014” de Karan Gulati e John Burchel. Este whitepaper está disponível
para download em https://msdn.microsoft.com/en-us/library/dn749781.aspx . As alterações
arquitetônicas no mecanismo de banco de dados multidimensional no SQL Server 2016 não alteram
as recomendações deste whitepaper para relacionamentos de atributos.
O designer de cubo fornece muitas funcionalidades para desenvolver seu cubo além da configuração
básica definida usando o Cube Wizard. Você pode usá-lo para adicionar novas medidas e configurar
propriedades para essas medidas, além de trazer diversas medidas em massa para um novo grupo de
medidas. Você também pode usá-lo para ajustar a granularidade dos relacionamentos entre grupos
de medidas e dimensões. Você não apenas pode definir medidas a partir das quais os valores são
recuperados de uma tabela de fatos de origem, mas também pode definir medidas calculadas , que
são medidas derivadas da definição de expressões que operam em medidas de origem de fatos. Por
último, uma etapa importante no desenvolvimento do cubo é garantir que o SSAS aplique a função
agregada apropriada a cada medida, que você também configura no designer do cubo.
Medidas
A seção “Desenvolver um cubo” da Habilidade 1.1 descreveu como adicionar medidas a um cubo em
massa usando o Assistente de Cubo. Você também pode adicionar medidas manualmente a um cubo
existente ou alterar propriedades de medidas usando o designer de cubo.
Para adicionar uma nova medida a um cubo existente, execute as seguintes etapas:
1. Clique duas vezes no arquivo Wide World Importers DW.cube no Solution Explorer, clique
com o botão direito do mouse no grupo de medidas Venda no painel Medidas na página
Estrutura do Cubo do designer de cubo e selecione Nova Medida.
No cubo atual, todas as colunas numéricas que representam medidas já existem no cubo, mas
se você tivesse omitido uma medida baseada em uma dessas colunas ao usar o Assistente de
Cubo, você poderia selecioná-la na lista Colunas de Origem na caixa de diálogo Nova Medida
caixa e adicione-a ao seu cubo.
2. Outra opção é criar uma medida de contagem distinta com base em uma coluna-chave na
tabela de fatos. Por exemplo, digamos que você queira incluir a capacidade de mostrar a
contagem distinta de itens de estoque vendidos a cada cliente ou vendidos em um
determinado dia. Para fazer isso, marque a caixa de seleção Mostrar todas as colunas na caixa
de diálogo Nova medida, selecione Contagem distinta na lista suspensa Uso, selecione Chave
do item de estoque na lista Coluna de origem, conforme mostrado na Figura 1-51, e clique
em OK . .
FIGURA 1-51 Seleção de uma medida na caixa de diálogo Nova Medida
Em vez de aparecer no grupo de medidas Vendas, a Contagem Distinta de Chave de Item de Estoque
aparece em um grupo de medidas recém-adicionado chamado Venda 1 porque as medidas de
contagem distintas são gerenciadas de forma diferente de outras medidas pelo SSAS. Como o cálculo
de um valor de contagem distinto no momento da consulta é caro para o SSAS executar, o SSAS
coloca cada medida de contagem distinta em seu próprio grupo de medidas. Você pode renomear o
grupo de medidas clicando com o botão direito e digitando um novo nome.
Depois de criar uma medida ou de incluir diversas medidas usando o Assistente de Cubo, você deverá
revisar as propriedades da medida para garantir que cada medida se comporte conforme esperado
quando os usuários corporativos navegam no cubo. Você pode revisar as propriedades de uma
medida selecionando a medida no painel Medidas do designer de cubo e, em seguida, rolando pela
janela Propriedades. Cada medida possui o seguinte conjunto de propriedades que você pode
configurar:
DisplayFolder Especifica a pasta na qual a medida será exibida no aplicativo cliente. Você digita
o nome de uma nova pasta ou seleciona o nome de uma pasta existente na lista suspensa da
propriedade. Usar uma pasta de exibição é útil para organizar medidas de forma lógica
quando o grupo de medidas contém muitas medidas.
MeasureExpression Define uma expressão MDX que resolve o valor de uma medida no nível
folha antes da agregação. Um motivo comum para implementar uma expressão de medida é
multiplicar um valor de vendas por uma taxa de câmbio antes de somar os valores de vendas.
Visível Determina se o aplicativo cliente exibe a medida. Se você alterar essa propriedade para
False, ainda poderá fazer referência à medida em expressões MDX, o que é útil quando a
medida base não é necessária para análise.
Descrição Permite fornecer informações adicionais sobre uma medida para exibição em um
aplicativo cliente.
FormatString Você pode selecionar uma sequência de formato em uma lista de formatos
possíveis, como Porcentagem ou Moeda, ou digitar um formato definido pelo usuário, como
#,# para exibir um valor inteiro com um separador de milhares. Você pode usar qualquer
formato personalizado válido do Microsoft Visual Basic para valores numéricos como uma
sequência de formato.
Atualmente, quando você navega no cubo, as propriedades padrão de cada medida estão em
vigor. Se você navegar no cubo no designer de cubo, não poderá ver a formatação. Embora nenhuma
formatação esteja definida ainda, você pode configurar uma consulta de linha de base usando o Excel
para navegar no cubo. Para fazer isso, execute as seguintes etapas:
1. Abra a guia Navegador do designer de cubo e selecione Analisar no Excel no menu Cubo.
Os resultados dessas seleções são exibidos em uma tabela dinâmica, conforme mostrado
na Figura 1.52 . Observe que nenhum desses valores está formatado para melhor legibilidade
e atualmente você pode somar os valores em cada linha de uma coluna para produzir o valor
do Total Geral na linha inferior.
FIGURA 1-52 Uma tabela dinâmica que exibe medidas não formatadas
As três alterações mais comuns necessárias para produzir os resultados desejados em um cubo são
alterar as propriedades AggregateFunction, FormatString e Name de uma medida. A propriedade
AggregateFunction afeta os totais que aparecem para membros de dimensão na consulta, bem como
o total geral. A propriedade FormatString facilita a visualização dos valores individuais nos resultados
da consulta, enquanto a propriedade Name deve ser um nome amigável que comunique claramente o
que o valor representa usando termos que os usuários corporativos reconheçam.
Para observar o efeito da alteração das propriedades dessas medidas, retorne à página Estrutura do
Cubo do designer de cubo e atualize os valores das propriedades conforme mostrado para cada
medida listada na Tabela 1-4.
FormatString Moeda
Total excluindo impostos
Nome Valor de
FormatString Moeda
Total incluindo impostos
Nome Valor de
FormatString #,#
Total de itens do resfriador
Nome Contage
FormatString #,#
Contagem distinta de chave de item de estoque
Nome Contage
Implante o projeto e depois mude para o Excel. Na guia Análise de Tabela Dinâmica da faixa de
opções, clique em Atualizar para atualizar a tabela dinâmica com as alterações do cubo. Observe a
nova formatação de algumas medidas, os valores ausentes de outras medidas e as medidas ausentes,
conforme mostrado na Figura 1.53 .
Cada medida renomeada não aparece mais na tabela dinâmica e deve ser adicionada novamente
manualmente. Adicione Valor de vendas com imposto e Valor de vendas sem imposto à tabela
dinâmica e, em seguida, adicione Valor de imposto para que você possa validar o valor Valor de
vendas com imposto em uma linha, destacando as colunas Valor de vendas sem imposto e Valor de
imposto na mesma linha, e verificar a Soma na barra de status na parte inferior da janela, conforme
mostrado na Figura 1-54 .
Validação do valor das vendas com valores de impostos somando o valor das vendas sem
FIGURA 1-54
impostos e o valor do imposto
Todas as medidas exibidas com valores na tabela dinâmica têm o valor AggregateFunction definido
como Soma. Esses valores refletem a soma de todas as linhas da tabela de fatos da coluna associada à
respectiva medida com agrupamento por Grupo de Compra. Depois que a propriedade
AggregateFunction para Taxa de Imposto e Preço Unitário for alterada para Nenhum, os valores na
tabela dinâmica dessas medidas não serão mais exibidos para essas medidas porque o SSAS ignora a
etapa de agregação ao recuperar os resultados da consulta. Esses valores no nível da linha ainda estão
acessíveis ao SSAS para cálculos MDX quando solicitado, mas somar a taxa de imposto ou o preço
unitário de uma venda não faz sentido para a análise de vendas. Você pode visualizar os valores
dessas duas medidas em nível de detalhe clicando duas vezes em uma célula, como E2, para abrir
uma nova planilha do Excel que exibe os detalhes em nível de linha na tabela de fatos da célula
selecionada, conforme mostrado na Figura 1-55 em que algumas colunas e linhas foram ocultadas
para focar nas colunas de interesse.
FIGURA 1-55 Detalhes da transação para o grupo de compras N/A em uma nova planilha do Excel
Se você voltar para a planilha original que contém a tabela dinâmica, remova todas as medidas,
exceto Contagem de Vendas, arrastando cada medida individualmente para fora do painel Valores, na
parte inferior da Lista de Campos das Tabelas Dinâmicas. Além disso, remova Grupo de Compras do
painel Linhas. Em seguida, selecione a medida Contagem distinta de itens de estoque e Província do
estado (na dimensão Cidade) para adicioná-los à tabela dinâmica, uma parte da qual é mostrada
na Figura 1.56 .
Uma tabela dinâmica mostrando uma medida padrão, Contagem de vendas, e uma medida
FIGURA 1-56
de contagem distinta, Contagem distinta de itens de estoque
Aqui você pode ver o número de transações de vendas como o valor de Contagem de vendas, que
conta cada linha na tabela de fatos e soma por estado e província. No entanto, a contagem distinta de
itens de estoque reflete a contagem distinta de itens de estoque vendidos a clientes em uma
província estadual específica. Se você rolar até a parte inferior da tabela dinâmica para localizar o total
geral, descobrirá que o total geral da contagem de vendas é 228.266 e o total geral da contagem
distinta do item de estoque é 228. Isso significa que há um total de 228.266 linhas na tabela de fatos,
mas 228 chaves distintas de itens de estoque na mesma tabela.
Na maioria das vezes, as medidas são aditivas . Ou seja, independentemente da dimensão incluída na
consulta com a medida, a agregação da medida por qualquer um dos atributos da dimensão é um
valor que é somado com precisão. Valores de propriedade AggregateFunction como Sum ou Count
são medidas aditivas. Você também pode definir medidas não aditivas e medidas semiaditivas
conforme descrito com mais detalhes nas seções “Funções agregadas” e “Definir comportamento
semiaditivo” deste capítulo.
Medir grupos
Lembre-se da Habilidade 1.1 que um grupo de medidas é uma coleção de medidas que vêm da
mesma tabela de fatos. Um cubo pode conter vários grupos de medidas. Idealmente, estes grupos de
medidas partilham uma ou mais dimensões em comum para facilitar a análise e reduzir o potencial de
confundir os utilizadores. Se não houver dimensões sobrepostas, considere criar cubos separados
para cada grupo de medidas.
Antes de poder incluir um grupo de medidas em um cubo, uma tabela correspondente deve existir no
DSV. Para revisar como adicionar um grupo de medidas (e posteriormente como trabalhar com
medidas semi-aditivas), vamos adicionar outra tabela de fatos ao DSV executando as seguintes
etapas:
2. Clique com o botão direito em qualquer lugar no painel do diagrama do designer DSV,
selecione Adicionar/Remover Tabelas, selecione Retenção de Estoque (Fato) na lista Objetos
Disponíveis, clique no botão > e clique em OK. A tabela é adicionada ao DSV com uma chave
primária definida como Chave de Retenção de Ações e um relacionamento adicionado entre a
tabela Retenção de Ações e a tabela de Itens de Ações com base na coluna Chave de Itens de
Ações.
A tabela Estoque é semelhante a uma tabela de estoque que mostra a quantidade de cada item em
estoque, entre outras informações. No entanto, uma tabela de inventário típica também inclui uma
coluna de data para mostrar a quantidade de cada item em estoque em datas diferentes. O inventário
pode ser rastreado anualmente, trimestralmente, mensalmente ou até diariamente, dependendo dos
requisitos do negócio. Para explorar melhor o comportamento semiaditivo posteriormente neste
capítulo, você pode substituir a tabela Stock Holding por uma consulta nomeada que simule
alterações no estoque ao longo do tempo, executando as seguintes etapas:
1. Clique com o botão direito na tabela Stock Holding no diagrama, aponte para Substituir
Tabela e selecione Com Nova Consulta Nomeada.
2. Substitua a instrução SELECT na caixa de diálogo Criar Consulta Nomeada pela instrução
mostrada na Listagem 1.10.
SELECIONAR
CONVERT(data, '01/01/2013') como DateKey,
[Chave do item em estoque],
[Quantidade disponível],
[Localização do depósito],
[Nível de reabastecimento],
[Nível de estoque alvo]
DE
Fato.[Retenção de Ações]
UNIÃO TODOS
SELECIONAR
CONVERT(data, '01/06/2013') como DateKey,
[Chave do item em estoque],
[Quantidade disponível] - [Chave do item em estoque] COMO
[Quantidade disponível],
[Localização do depósito],
[Nível de reabastecimento],
[Nível de estoque alvo]
DE
Fato.[Participação Acionária] AS t;
Uma coluna de chave substituta não é necessária em uma tabela de fatos, portanto a consulta
nomeada elimina essa coluna junto com outras colunas estranhas para que os resultados da
consulta nomeada sejam simplificados tanto quanto possível. Além disso, uma coluna de data
arbitrária é adicionada e um novo valor é calculado para a quantidade disponível no segundo
período para forçar uma diferença no estoque entre os períodos.
3. Antes de clicar em OK, certifique-se de digitar Stock Holding na caixa Nome na parte superior
da caixa de diálogo se o nome não estiver correto no momento.
6. Agora você está pronto para usar a nova consulta nomeada como um novo grupo de
medidas. Clique duas vezes no arquivo Wide World Importers DW.cube no Solution Explorer,
clique com o botão direito no painel Medidas do designer de cubo e selecione Novo Grupo
de Medidas. Na caixa de diálogo Novo grupo de medidas, selecione Retenção de estoque e
clique em OK.
Todas as colunas numéricas que não são usadas em relacionamentos no DSV são
consideradas medidas e adicionadas como um grupo quando você cria o novo grupo de
medidas. Se você não quiser incluir uma medida, como Contagem de estoque, clique com o
botão direito na medida no painel Medidas, selecione Excluir e clique em OK para confirmar a
exclusão.
8. Defina a propriedade FormatString para cada uma das três medidas restantes como #,#.
10. Implemente o projeto, abra a página Navegador do designer de cubo, clique em Reconectar e
configure uma consulta para visualizar a Quantidade Disponível por Grupo de Compras.
Importante Grupos de medidas vinculados remotamente foram preteridos no SQL Server 2016
Granularidade
Normalmente, o atributo de granularidade é aquele definido como chave na dimensão, mas pode
haver cenários de modelagem em que seja um atributo diferente. Para esclarecer ainda mais a
granularidade, considere uma situação em que você tem uma dimensão Data que possui atributos
Dia, Mês e Ano e uma tabela de fatos Venda que inclui uma coluna DayKey associada ao atributo Dia
como um relacionamento regular. Na dimensão Data, o atributo Mês possui duas colunas principais,
Mês e Ano. Digamos que você também tenha uma tabela de fatos Forecast na qual as vendas
previstas por mês e ano são armazenadas, conforme mostrado na Figura 1.58 .
FIGURA 1-58 Tabelas de fatos com granularidade diferente compartilhando uma dimensão comum
Para configurar corretamente o uso da dimensão para o grupo de medidas hipotético Previsão e a
dimensão Data, crie um relacionamento regular entre eles e defina o atributo de granularidade como
Mês. Quando você define esse atributo de granularidade, a lista Colunas de Dimensão na caixa de
diálogo Definir Relacionamentos exibe as duas colunas principais, Mês e Ano, para o atributo de
granularidade selecionado e, em seguida, você pode mapear essas duas colunas para as colunas do
grupo de medidas Mês e Ano.
Medidas calculadas
Para revisar as etapas necessárias para adicionar uma medida calculada, vamos adicionar uma medida
calculada simples ao cubo DW da Wide World Importers para calcular a margem de lucro:
5. Na lista suspensa Format String, selecione “Porcentagem” para aplicar uma string de formato.
SELECIONAR
SUM(Lucro) / SUM([Total sem impostos]) AS ProfitMarginPercent
DE Fato.Venda;
Funções agregadas
Por padrão, cada nova medida criada recebe Sum como o valor da propriedade
AggregateFunction. De longe, esse é o tipo mais comum de agregação usado ao desenvolver um
cubo. No entanto, o SSAS suporta o uso de outras funções agregadas, algumas das quais são aditivas
como a função Soma, enquanto outras são semi-aditivas e não-aditivas. Uma
função semiaditiva realiza uma agregação em alguma dimensão, mas não necessariamente em todas
as dimensões, o que é descrito com mais detalhes na próxima seção. Uma função não aditiva não
agrega nada, mas executa um tipo específico de cálculo. A Tabela 1-5 lista todas as funções
agregadas suportadas pelo SSAS.
Contagem Distinta Não aditivo Executa uma contagem de membros filhos exclusivos.
Nenhum Não aditivo Ignora a agregação e retorna um valor apenas para membros filhos
Por conta Semiaditivo Aplica a função agregada aplicável ao membro atual de uma dimens
MédiaDeCrianças Semiaditivo Soma o total dos membros filhos e depois divide o resultado pela co
PrimeiroNãoVazio Semiaditivo Retorna o valor do primeiro membro filho que não está vazio.
ÚltimoNãoVazio Semiaditivo Retorna o valor do último membro filho que não está vazio.
Para usar a função agregada ByAccount, há muitas outras etapas que devem ser executadas para
configurar adequadamente a dimensão e o comportamento do cubo. Primeiro, a dimensão da conta
deve incluir um atributo com seu tipo definido como Tipo de Conta. Em seguida, você define o
mapeamento de tipos de contas para agregar funções no designer de banco de dados, que pode ser
acessado no menu Banco de dados selecionando Editar banco de dados. Para revisar o conjunto
completo de requisitos, consulte “Criar uma conta financeira de dimensão do tipo pai-filho”
em https://msdn.microsoft.com/en-us/library/ms174609.aspx .
A agregação semiaditiva é importante quando você precisa analisar valores de tabelas de fatos
pontuais, como inventário. Nesse caso, você soma os valores em uma dimensão, mas escolhe um
valor pontual ou um valor médio ao agregar na dimensão Data. Por exemplo, se você tiver contagens
de estoque para julho e dezembro, mas quiser retornar a contagem de estoque do ano, normalmente
desejará o último valor do ano, que está associado a dezembro. Outro cenário comum para semi-
aditividade são os relatórios financeiros. Você soma receitas e despesas mês a mês ao visualizar dados
trimestrais ou anuais, mas usa o último valor para ativos ou passivos.
Atualmente, a função agregada aplicada a cada uma destas medidas é a função Soma. Portanto, os
valores resultantes representam um total de todos os itens em estoque, o que não é o resultado
desejado. Vamos alterar a consulta para focar em um único item de estoque para ajudar a ver o
comportamento da medição com mais clareza. Adicione um filtro selecionando Item de estoque na
lista suspensa Dimensão acima da janela de consulta e Item de estoque na lista suspensa
Hierarquia. Na lista suspensa Filter Expression, expanda All, marque a caixa de seleção USB Missile
Launcher (Green) e clique em OK. Agora você pode ver duas contagens de estoque separadas para
janeiro e junho, conforme mostrado na Figura 1.60 .
Se você remover os atributos Mês e Data do calendário da consulta, a consulta retornará uma única
linha, conforme mostrado na Figura 1.61 . Os valores da medida refletem a soma dos valores
agregados do ano de 2013 a janeiro e do ano de 2013 a junho para cada medida.
FIGURA 1-61 Resultados da consulta para um único item de estoque para o ano civil CY2013
Este comportamento de agregação está incorreto porque as medidas devem refletir o valor da última
data de inventário em vez da soma. Para alterar esse comportamento, execute as seguintes etapas:
Resumo do capítulo
Antes de começar a construir um banco de dados multidimensional, você deve dedicar algum
tempo projetando um esquema em estrela para dar suporte aos requisitos de negócios em
um ambiente OLAP. O esquema em estrela consiste em uma ou mais tabelas de fatos e
tabelas de múltiplas dimensões que você preenche a partir de sistemas OLTP usando
processos ETL. Em um projeto multidimensional criado no SSDT, você se conecta a esse
esquema em estrela criando uma fonte de dados e, em seguida, faz referência a tabelas no
esquema em estrela criando uma exibição de fonte de dados. Em seguida, você pode
adicionar objetos de dimensão ao seu projeto usando o Assistente de Dimensões e adicionar
um cubo usando o Assistente de Cubos. Você pode então ajustar os objetos de dimensão e
de cubo configurando propriedades nos designers de dimensão e de cubo,
respectivamente. Você deve implantar seu SSDT para criar o banco de dados
multidimensional e seus objetos no servidor SSAS.
O SSAS oferece suporte a muitos tipos diferentes de modelos dimensionais. O exame testa
seu conhecimento sobre a seleção e configuração dos seguintes tipos:
Fato Use este modelo dimensional quando desejar incluir uma dimensão degenerada
em seu banco de dados. Na página Uso da Dimensão do designer de cubo, você deve
relacionar a dimensão a um grupo de medidas usando o tipo de relacionamento Fato.
Pai-filho Utilize este modelo dimensional quando uma tabela de dimensões incluir um
relacionamento de chave estrangeira consigo mesma. Adicione a coluna que contém
a chave estrangeira como um atributo na dimensão e defina sua propriedade Usage
como Parent. Opcionalmente, você pode configurar propriedades aplicáveis somente
a um atributo pai.
Interpretação Use este modelo dimensional quando você tiver uma dimensão
representada diversas vezes em uma tabela de fatos em diferentes contextos. Por
exemplo, você pode ter Data da fatura e Data de entrega com base na mesma
dimensão Data. Você cria um objeto de dimensão em seu projeto, mas adiciona a
dimensão quantas vezes for aplicável ao cubo. Na página Uso da Dimensão do
designer de cubo, você relaciona cada dimensão do cubo ao mesmo grupo de
medidas usando o tipo de relacionamento Regular, mas define diferentes atributos de
granularidade, que se relacionam a diferentes colunas do grupo de medidas.
Referência Use este modelo dimensional quando precisar dar suporte ao slice and
dice por uma dimensão para a qual não existe nenhuma chave estrangeira na tabela
de fatos, embora esteja relacionada a uma dimensão intermediária que possui uma
chave estrangeira na tabela de fatos. O atributo-chave para a dimensão de referência
deve existir como um atributo não-chave na dimensão intermediária. Na página Uso
da Dimensão do designer de cubo, você define um relacionamento Referenciado
entre a dimensão de referência e o grupo de medidas e especifica a dimensão
intermediária.
Mineração de dados Use esse modelo dimensional quando desejar usar um algoritmo
de mineração de dados para criar uma dimensão útil para fatiar e dividir, como
clusters de clientes. Primeiro você deve criar um modelo de mineração de dados para
definir a técnica de mineração de dados e as colunas às quais o algoritmo de
mineração de dados será aplicado. O Assistente de Mineração de Dados permite criar
uma dimensão na qual armazenar os resultados e, opcionalmente, um cubo.
Muitos para muitos Use esse modelo dimensional quando precisar acumular medidas
por diferentes atributos de dimensão sem supercontar os resultados nas
agregações. Normalmente, você deve adicionar uma tabela ponte como um grupo de
medidas ao cubo para suportar essa estrutura e ocultar o grupo de medidas do
cubo. Na página Uso da Dimensão do designer de cubo, defina um relacionamento
Regular entre a dimensão e a tabela de ponte e um relacionamento Muitos-para-
Muitos entre a dimensão e o grupo de medidas original. Você especifica a tabela
ponte como o grupo de medidas intermediárias para o relacionamento muitos para
muitos.
Dimensão de alteração lenta Use este modelo dimensional quando precisar rastrear
alterações em um atributo ao longo do tempo para um projeto SCD Tipo 2. No
design da dimensão, você deve incluir o atributo chave, bem como o atributo que
contém a chave comercial na tabela de origem e, em seguida, ocultar o atributo
chave definindo sua propriedade AttributeHierarchyVisible como False.
Use a propriedade Type para objetos de dimensão e atributo quando precisar que o SSAS ou
aplicativos cliente invoquem um comportamento específico quando esse objeto for
consultado. O tipo de dimensão mais comum a ser implementado é Tempo, embora você
também deva estar familiarizado com os conceitos de implementação dos tipos de dimensão
Contas e Moeda.
Depois de adicionar uma hierarquia definida pelo usuário a uma dimensão, você deverá
revisar e corrigir os relacionamentos de atributos conforme necessário. Uma hierarquia
definida pelo usuário fornece um caminho de navegação predefinido que simplifica a
exploração do cubo em um aplicativo cliente. O SSAS usa relacionamentos de atributos
correspondentes para otimizar o armazenamento e a recuperação de dados para hierarquias
naturais.
Use o designer de cubo para incluir e configurar medidas e grupos de medidas após criar
inicialmente um cubo usando o Assistente de Cubo. É importante configurar corretamente as
propriedades AggregateFunction e FormatString para cada medida para garantir que os
valores sejam agregados adequadamente e exibidos de forma legível nos aplicativos
cliente. Você também pode adicionar medidas calculadas para incluir lógica de negócios para
valores não escalares que são importantes para a análise de negócios.
O SSAS inclui as seguintes funções agregadas para dar suporte à semiaditividade: Min, Max,
ByAccount, AverageOfChildren, FirstChild, LastChild, FirstNonEmpty e LastNonEmpty. Uma
agregação semiaditiva adiciona valores em uma dimensão, mas não em outras. Casos de uso
comuns para comportamento semiaditivo são relatórios de contas financeiras e análise de
inventário.
Experimento mental
Neste experimento mental, demonstre suas habilidades e conhecimento dos tópicos abordados neste
capítulo. Você pode encontrar as respostas para esse experimento mental na próxima seção.
A Humongous Insurance é uma empresa que vende apólices de seguros para consumidores
individuais e empresas em um único país e possui escritórios em quatro regiões diferentes deste
país. O valor pelo qual cada apólice de seguro é vendida é denominado prêmio. Anualmente, o
gerente de vendas projeta cotas mensais de prêmios de seguros por região. Você foi contratado
como desenvolvedor de BI na Humongous Insurance para criar um banco de dados multidimensional
SSAS que permite aos usuários analisar vendas e cotas.
O ambiente de banco de dados atual inclui um sistema OLTP denominado Vendas e outro sistema
OLTP denominado Cotas. Ambos os bancos de dados são executados atualmente no SQL Server 2016.
Antes de criar o banco de dados multidimensional, você deve projetar e preencher um data
warehouse que possa responder aos seguintes tipos de perguntas:
Quantas apólices foram vendidas por ramo de seguro (pessoal ou comercial), cliente,
território de vendas e data?
Qual é a receita, o custo, o lucro e a porcentagem de lucro das apólices vendidas por ramo de
seguro, cliente, território de vendas e data?
Um cliente pode ter diversas políticas, mas cada política é limitada a um cliente.
A dimensão de data deve suportar a perfuração de ano para mês até a data.
Com base nessas informações básicas e nos requisitos de negócios, responda às seguintes perguntas:
3. Qual propriedade você define para ocultar o atributo de número de telefone na dimensão do
cliente das operações de divisão e divisão, mas permite que ele seja incluído na dimensão
como uma propriedade de membro?
A. AtributoHierarquiaOrdenado
B. AtributoHierarquiaVisível
C. AtributoHierarchyEnabled
D. É Agregável
4. Qual propriedade você define para cada medida para melhorar a legibilidade dos valores em
um aplicativo cliente?
A. Tipo de dados
B. MedirExpressão
C. Função Agregada
D. FormatString
5. Ao navegar na dimensão de data, você percebe que os membros do atributo Mês são
classificados em ordem alfabética. Como você corrige esse problema?
A. Adicione uma coluna da tabela de fatos e defina FormatString da nova medida como
Percent.
8. Ao processar e, em seguida, consultar o cubo para visualizar a cota por cliente, você verá o
mesmo valor de cota repetido em cada linha. Que medidas você pode tomar para evitar a
exibição desses valores?
A resposta A, DataType, está incorreta porque o tipo de dados não melhora a legibilidade dos
valores de medida. A resposta B, MeasureExpression, está incorreta porque afeta o cálculo de
uma medida, mas não altera sua aparência. A resposta C, AggregateFunction, também está
incorreta porque altera a forma como o SSAS retorna um valor para membros pais, somando
ou contando, por exemplo, mas não altera a aparência da medida.
5. Para o atributo Mês, vincule a propriedade KeyColumn às colunas Ano e Mês na origem. Além
disso, certifique-se de que a propriedade OrderBy esteja definida como Key.
6. Defina Mês como o atributo de granularidade. Em seguida, você mapeia esse atributo para as
colunas Ano e Mês no grupo de medidas na caixa de diálogo Definir Relacionamento.
7. A resposta é B. Adicione o lucro como uma medida calculada definindo uma expressão MDX
como esta:
[Medidas].[Lucro] / [Medidas].[Receita]
8. A resposta A está incorreta porque o percentual de lucro não é aditivo e deve ser calculado
no momento da consulta e, portanto, não pode ser armazenado na tabela de fatos. A
resposta C está incorreta por um motivo semelhante. Um grupo de medidas requer uma
medida baseada em uma coluna da tabela de fatos e a porcentagem de lucro não pode ser
armazenada na tabela de fatos. A resposta D está incorreta porque o cálculo
MeasureExpression é executado em nível de detalhe e depois agregado, o que produz um
resultado incorreto. O cálculo da percentagem de lucro deve basear-se no valor agregado do
lucro e dividir esse valor pelo valor agregado da receita.