Escolhendo uma experiência de modelagem de tabela ou multidimensional no SQL Server 2012 Analysis Services Artigo técnico sobre o Microsoft Business Intelligence Autores Hitachi Consulting: Liz Vitt – autora Scott Cameron – autor Hilary Feier - revisora Microsoft: T.K. Anand - revisor Ashvini Sharma - revisor Publicado em: maio de 2012 Aplica-se a: SQL Server 2012 Analysis Services Resumo: Este white paper fornece diretrizes práticas para ajudar os profissionais e tomadores de decisões de BI a decidir se a modelagem de tabela ou multidimensional do SQL Server 2012 Analysis Services é a mais adequada para sua próxima solução de BI. Direitos autorais Este documento é fornecido “como está”. As informações e opiniões expressas nele, inclusive URLs e outras referências a sites da Internet, poderão ser alteradas sem aviso prévio. Você se responsabiliza por usá-lo. Este documento não fornece direitos legais a nenhuma propriedade intelectual de qualquer produto Microsoft. Você pode copiar e usar este documento para sua referência interna. © 2012 Microsoft Corporation. Todos os direitos reservados. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 2 Sumário Introdução ................................................................................................................................................................................. 4 Informações básicas sobre a modelagem BISM......................................................................................................... 5 Modelagem multidimensional ..................................................................................................................................... 5 Modelagem de tabela ..................................................................................................................................................... 5 Ferramentas de análise de cliente BISM ........................................................................................................................ 6 Modelo de dados ................................................................................................................................................................... 6 Relações de dados ............................................................................................................................................................ 7 Relações um-para-muitos ........................................................................................................................................ 7 Relações muitos-para-muitos ................................................................................................................................. 7 Relações de referência ............................................................................................................................................... 8 Hierarquias ........................................................................................................................................................................... 8 Hierarquias padrão ...................................................................................................................................................... 8 Hierarquias desbalanceadas .................................................................................................................................... 8 Hierarquias pai-filho ................................................................................................................................................... 9 Recursos de modelagem adicionais .......................................................................................................................... 9 Lógica de negócios .............................................................................................................................................................. 10 Transformações em nível de linha ............................................................................................................................ 10 Valores agregados .......................................................................................................................................................... 11 Cálculos ............................................................................................................................................................................... 12 Cenários de lógica de negócios................................................................................................................................. 13 Lógica de hierarquia ................................................................................................................................................. 14 Rollups personalizados ............................................................................................................................................ 14 Medidas semiaditivas ............................................................................................................................................... 15 Inteligência de dados temporais ......................................................................................................................... 16 KPIs .................................................................................................................................................................................. 16 Conversão de moeda ............................................................................................................................................... 16 Conjuntos nomeados ............................................................................................................................................... 17 Acesso a dados e armazenamento ................................................................................................................................ 17 Desempenho e escalabilidade ................................................................................................................................... 17 Modelos multidimensionais .................................................................................................................................. 17 Modelos de tabela..................................................................................................................................................... 19 Programação ..................................................................................................................................................................... 21 Segurança ................................................................................................................................................................................ 21 Segurança em nível de linha/atributo ..................................................................................................................... 21 Segurança dinâmica ....................................................................................................................................................... 22 Segurança em nível da célula e avançada ............................................................................................................. 22 Resumo..................................................................................................................................................................................... 24 Para saber mais ..................................................................................................................................................................... 28 Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 3 Introdução A modelagem de dados é uma disciplina praticada há vários anos por profissionais de BI com um objetivo comum: organizar dados discrepantes em um modelo analítico que dê suporte efetivo e eficiente às necessidades de relatório e análise dos negócios. À medida que a modelagem de dados evolui ao longo dos anos com novas tecnologias e ferramentas, as organizações enfrentam o desafio crescente de misturar seus paradigmas de modelagem de uma forma consistente e coerente que satisfaça não só as diversas necessidades de análise, mas também ofereça uma experiência de análise comum à empresa. Com o lançamento do SQL Server 2012, a Microsoft cumpre esse desafiante objetivo com a introdução do BISM(modelo semântico de BI), um modelo único que pode dar suporte a diversos relatórios e análises mesclando duas experiências de modelagem do Analysis Services nos bastidores: A modelagem multidimensional, introduzida no SQL Server 7.0 OLAP Services e mantida no SQL Server 2012 Analysis Services, permite que os profissionais de BI criem cubos multidimensionais sofisticados usando o OLAP (processamento analítico online) tradicional. A modelagem de tabela, introduzida com o PowerPivot para Microsoft Excel 2010, fornece recursos de modelagem de dados de autoatendimento para analistas de negócios e de dados. A experiência de modelagem de tabela está mais acessível a esses usuários, muitos dos quais passaram anos trabalhando com dados em ferramentas de produtividade para área de trabalho, como o Excel e o Microsoft Access. No SQL Server 2012, a modelagem de tabela foi ampliada para permitir que profissionais de BI criem modelos de tabela no Analysis Services ou importem um modelo de tabela do PowerPivot para o Analysis Services. Observe que um modelo do PowerPivot não pode ser importado para um modelo multidimensional do Analysis Services. O objetivo deste white paper é fornecer diretrizes práticas para ajudar você a decidir qual experiência de modelagem do SQL Server 2012 Analysis Services - de tabela ou multidimensional - é a mais adequada para sua próxima solução de BI. As descrições e recomendações de produtos neste documento baseiam-se no SQL Server 2012 Analysis Services, que foi lançado em março de 2012. As características e recomendações de produtos poderão mudar à medida que a modelagem multidimensional e de tabela do Analysis Services evoluir em versões futuras do SQL Server. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 4 Informações básicas sobre a modelagem BISM Antes de mergulhar nas diferenças detalhadas entre a modelagem multidimensional e a de tabela, vamos começar com breves informações básicas sobre cada experiência de modelagem BISM fornecida pelo SQL Server 2012 Analysis Services. Modelagem multidimensional Em seu núcleo, a modelagem multidimensional cria cubos compostos de medidas e dimensões baseadas em dados contidos em um banco de dados relacional. Para usar esse paradigma, o servidor do Analysis Services deve ser configurado para funcionar no modo multidimensional, que é a configuração padrão. Nesse modo, o mecanismo OLAP usa o modelo multidimensional para agregar previamente grandes volumes de dados para dar suporte a tempos de resposta rápidos de consultas. O mecanismo OLAP pode armazenar essas agregações em disco com o armazenamento MOLAP (OLAP multidimensional) ou no banco de dados relacional com armazenamento ROLAP (OLAP relacional). As principais características da modelagem multidimensional incluem: Modelo de dados avançado – o modelo multidimensional do SQL Server 2012 Analysis Services está em sua sexta versão e oferece ampla funcionalidade para modelar medidas e dimensões de conjuntos de dados simples e complexos normalmente encontrados em data warehouses empresariais. Um conjunto de dados mais complexo costuma incluir recursos avançados, como relações muitospara-muitos, hierarquias pai-filho e localização. O modelo multidimensional fornece essa funcionalidade pronta para uso. Análise sofisticada – o modelo multidimensional também fornece um cálculo avançado e uma linguagem de consulta chamada MDX (Multidimensional Expressions). Usando a linguagem MDX, é possível criar lógica de negócios e cálculos sofisticados que podem funcionar em qualquer lugar no espaço multidimensional para realizar alocações financeiras, cálculos de série temporal ou métricas semiaditivas. Embora a modelagem de dados abrangente e a analítica sofisticada sejam importantes benefícios da modelagem multidimensional, elas geralmente têm, em contrapartida, ciclos de desenvolvimento mais longos e menor capacidade de adaptação rápida a condições comerciais variáveis. Além disso, a experiência multidimensional tende a exibir habilidades de modelagem avançada e MDX. Modelagem de tabela A modelagem de tabela organiza dados em tabelas relacionadas. Se você quiser usar esse tipo de modelagem, o Analysis Services deverá ser configurado para funcionar no modo de tabela. Nesse modo, você pode usar o mecanismo em memória xVelocity (antes conhecido como Vertipaq) para carregar dados de tabela na memória para obter respostas rápidas de consultas, ou usar o DirectQuery para passar consultas para o banco de dados de origem e aproveitar seus recursos de processamento de consultas. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 5 As principais características da modelagem de tabela incluem: Familiaridade - o trabalho com dados de tabela é familiar a vários públicos que trabalham regularmente com tabelas armazenadas em bancos de dados relacionais, no Excel ou no Access. Além disso, os cálculos são escritos usando DAX (Data Analysis Expressions), uma linguagem de fórmula considerada como uma extensão da linguagem de fórmula do Excel. Dessa forma, as habilidades necessárias para criar modelos de tabela são mais comuns ou mais facilmente aprendidas quando comparadas às habilidades necessárias para criar modelos multidimensionais. Flexibilidade - como não há uma organização rígida de dados em medidas e dimensões; a modelagem de tabela pode acelerar os ciclos de desenvolvimento, exigindo menos preparação antecipada de dados e rigor de design do que os modelos multidimensionais. Essa arquitetura de dados também pode acomodar mais as alterações de modelagem de dados ao longo do tempo, quando é necessário atualizar relações e cálculos de acordo com as necessidades comerciais variáveis. Embora a familiaridade e a flexibilidade sejam os principais benefícios da modelagem de tabela, elas também têm prós e contras. Por exemplo, a modelagem de tabela pode não ser adequada para as soluções que têm conjuntos de dados altamente complexos ou pode exigir uma lógica de negócios sofisticada. Em geral, os usuários da linguagem DAX podem criar fórmulas DAX para fornecer funcionalidade analítica que, caso contrário, não estaria disponível no modelo de tabela. Nesses casos, porém, pode ser mais apropriado e eficiente usar os recursos avançados fornecidos de forma nativa pela modelagem multidimensional. Ferramentas de análise de cliente BISM Escolhendo a modelagem multidimensional ou de tabela, é importante observar que você poderá usar as ferramentas de cliente que geram MDX ou DAX para consultar o modelo. O Excel e o SQL Server Reporting Services são exemplos das ferramentas de cliente que geram consultas usando MDX, e o Power View é um exemplo de uma ferramenta de cliente que gera consultas usando DAX. Há duas exceções a essa diretriz. O Power View é uma ferramenta de exploração e visualização de dados interativa que é um recurso do suplemento Microsoft SQL Server 2012 Reporting Services para o Microsoft SharePoint Server 2010 Enterprise Edition. Se você quiser usar o Power View ou qualquer outro cliente de análise que usa DAX para consultar um BISM, precisará de um modelo de tabela. Espera-se que as versões futuras do SQL Server ofereçam a capacidade de usar DAX para consultar modelos multidimensionais, de modo que eles possam ser acessados por uma ferramenta de cliente como o Power View. Os modelos de tabela que foram configurados para usar DirectQuery exigem uma ferramenta de cliente que gera consultas DAX, como o Power View. Esperase que as versões futuras do SQL Server permitam que modelos de tabela configurados para usar DirectQuery aceitem consultas MDX. Modelo de dados As características do seu modelo de dados são uma consideração fundamental na escolha da sua experiência de modelagem. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 6 Relações de dados Um requisito fundamental de qualquer modelo de dados é representar corretamente a forma como os elementos de dados desse modelo se interrelacionam e se conectam, de modo muito semelhante às peças de um quebra-cabeça. Os modelos de tabela e os modelos multidimensionais exigem que você defina relações entre suas tabelas de dados de origem. As relações comuns que você vê na modelagem de dados são relações um-para-muitos, muitos-para-muitos e de referência. Relações um-para-muitos Em uma relação um-para-muitos, um único registro de uma tabela está relacionado a vários registros de outra tabela. Um exemplo de uma relação um-para-muitos é um cliente com várias ordens de venda. Os modelos de dados de tabela e multidimensionais lidam nativamente com relações um-para-muitos. Relações muitos-para-muitos Em uma relação muitos-para-muitos, vários registros de uma tabela estão relacionados a vários registros de uma segunda tabela. Por exemplo, um único cliente tem uma relação um-para-muitos com ordens de venda; no entanto, cada cliente pode ser categorizado em um ou mais perfis de cliente (como esportista (Sports Enthusiast), jogador casual (Casual Gamer) e profissional de educação física (Fitness Expert)). A análise de ordens por perfil de cliente é um desafio muitos-para-muitos, onde pode ocorrer uma contagem dobrada: um pedido de uma bicicleta por um cliente que seja esportista e profissional de educação física pode ser facilmente contado duas vezes quando as ordens por perfil de cliente são somadas para a obtenção do total de pedidos. Normalmente, o gerenciamento de relações muitos-para-muitos desmembraas em duas relações um-para-muitos usando uma tabela de ponte ou intermediária, como é representado na Figura 1. ID do cliente 1 … Nome do cliente Elizabeth Johnson … ID do cliente 1 1 1 … Tabela de clientes ID do cliente 1 1 1 … Ordem de ... S9100 S9101 S9102 … Valor das ... $ 4,000 $ 2,500 $ 7,000 … Tabela de ordens de venda Perfil do cliente Entusiasta de esportes Jogador casual Especialista em exercícios … Tabela de ponte/intermediária para atribuir o perfil de cliente Figura 1 - Exemplo de muitos-para-muitos Em modelos multidimensionais, você pode definir e criar relações muitos-para-muitos diretamente no modelo de dados identificando a tabela de ponte e, em seguida, relacionando-a essa tabela de ponte a outras tabelas em seu modelo. Ao agregar, o Analysis Services aplica uma soma distinta para garantir que os totais dos dados tenham sido corretamente resumidos e não incorretamente inflacionados. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 7 Os modelos de tabela do SQL Server 2012 Analysis Services não dão suporte à definição de relações muitos-para-muitos. Porém, você pode usar a linguagem DAX para criar fórmulas que manipulem o desafio muitos-para-muitos. Relações de referência Um modelo de dados pode conter um conjunto de atributos comuns que estejam relacionados a várias entidades. Por exemplo, atributos geográficos estão relacionados a clientes, fornecedores e lojas. Na modelagem multidimensional, você deve criar uma dimensão que contenha os atributos comuns e depois criar relações de dimensão de referência para cada uma das dimensões relacionadas. Na modelagem de tabela, não há necessidade de criar relações de referência. Em um modelo de tabela, tudo que você precisa fazer é criar relações entre a tabela que contém os atributos comuns e as tabelas que contêm as entidades relacionadas. Hierarquias As hierarquias categorizam dados em uma estrutura de árvore para facilitar as análises detalhadas. Hierarquias padrão As hierarquias padrão são compostas de níveis ordenados que vêm de colunas dos dados de origem. Por exemplo, uma hierarquia de produtos pode organizar produtos em subcategorias, as quais ainda podem ser organizadas em categorias. Nesse caso, você teria uma hierarquia com três níveis, onde cada nível vem de uma coluna separada em seus dados de origem. As hierarquias simples, como a hierarquia de produtos descrita aqui, têm suporte em modelos de tabela e multidimensionais. Observe que, nos modelos multidimensionais, há uma etapa adicional de criação de relações de atributos, que é identificar explicitamente as relações um-para-muitos entre os atributos de cada dimensão. A definição de relações de atributos é altamente recomendada porque elas permitem um design mais eficiente de agregações précalculadas e, além disso, a semântica da linguagem MDX utiliza relações de atributos. A modelagem de tabela é mais simples porque você não cria relações de atributos. Os modelos de tabela não calculam previamente agregações e a semântica da linguagem DAX não depende da identificação das relações um-para-muitos entre atributos, portanto, na modelagem de tabela, não há nenhum equivalente às relações de atributos da modelagem multidimensional. Hierarquias desbalanceadas As hierarquias desbalanceadas ocorrem quando um elemento de dados especificado está ausente na árvore hierárquica. Por exemplo, ocorrerá uma hierarquia desbalanceada de produtos se houver produtos que nunca foram atribuídos a uma subcategoria, mesmo que tenham atribuições de categoria de produto. Nessas situações, em vez de mostrar a lacuna na árvore, você poderá optar por ocultar a lacuna para facilitar a análise detalhada. Os modelos multidimensionais incluem suporte pronto para uso a hierarquias desbalanceadas; porém, os modelos de tabela não dão suporte a esse recurso. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 8 Hierarquias pai-filho As hierarquias pai-filho oferecem um design hierárquico mais complicado. Nem todas as ramificações em uma hierarquia pai-filho têm o mesmo número de níveis. Por exemplo, uma relação pai-filho entre funcionário e gerente pode gerar uma hierarquia na qual alguns gerentes têm apenas subordinados diretos, enquanto outros têm subordinados diretos que também têm seus próprios subordinados. Esse tipo de hierarquia é modelado por meio da criação de uma relação entre duas colunas em uma tabela de dados de origem, como mostra a Figura 2. Employee Funcionário Ken J. Sánchez Brian S. Welcker Amy E. Alberts Jae B. Pak David M. Bradley Kevin F. Brown Manager Gerente Ken J. Sánchez Ken J. Sánchez Brian S. Welcker Amy E. Alberts Ken J. Sanchez David M. Bradley Dados de origem pai-filho Árvore hierárquica pai-filho Figura 2 - Hierarquia pai-filho Os modelos multidimensionais oferecem uma funcionalidade pronta para uso que permite definir e criar hierarquias pai-filho baseadas em relações nos dados de origem. Em modelos de tabela, você pode usar funções DAX para criar fórmulas que navegam na estrutura pai-filho e a utilizam em cálculos. Para saber mais sobre o uso de hierarquias pai-filho em modelos de tabela, consulte Compreendendo funções para hierarquias pai-filho em DAX (http://msdn.microsoft.com/ptbr/library/gg492192(v=sql.110).aspx). Recursos de modelagem adicionais Além de relações e hierarquias de dados, há os recursos de modelagem adicionais que podem ajudá-lo a escolher a melhor experiência de modelagem: As perspectivas permitem que você defina um subconjunto de um modelo de dados para simplificar a navegação dos usuários finais. As perspectivas estão disponíveis nos modelos multidimensionais e de tabela. As traduções permitem que os modelos multidimensionais exibam a dimensão, o atributo, a medida, o membro calculado e outros valores de membros de dimensão e nomes de objetos no idioma especificado nas configurações locais do computador. Habilitar esse recurso requer que o desenvolvedor de modelos forneça os nomes de objetos traduzidos e faça referência às colunas dos dados de origem que contêm os valores dos membros de dimensão traduzidos. Os modelos de tabela não dão suporte a essa funcionalidade. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 9 As ações capacitam os usuários finais a executar um relatório do Reporting Services, navegar até uma URL ou iniciar uma operação externa baseada no contexto da célula onde ocorre a ação. Por exemplo, usando uma ação, um usuário final pode iniciar uma página da Web que exiba o catálogo de produtos da empresa filtrado automaticamente para os produtos que o usuário estava procurando. As ações têm suporte nativo em modelos multidimensionais, e muitas ferramentas de cliente (como o Excel e o Reporting Services) permitem que os usuários executem ações. No SQL Server 2012, a capacidade de criar ações em um modelo de tabela usando o SQL Server Data Tools não tem suporte. O detalhamento permite a navegação pelos dados detalhados armazenados em seu modelo. O detalhamento está disponível nas modelagens multidimensional e de tabela. Os modelos multidimensionais também permitem criar ações de detalhamento de forma que você possa personalizar a experiência de detalhamento especificando as colunas que serão retornadas pela ação de detalhamento e o espaço de cubo onde a ação será habilitada. O write-back é um recurso que geralmente é necessário em aplicativos de orçamento e previsão. Nesses cenários, os usuários corporativos normalmente desejam executar a análise hipotética (“what-if”) onde eles alteram e atualizam valores de dados no modelo e, em seguida, os publicam para que outras pessoas os vejam. Os modelos multidimensionais dão suporte nativo ao writeback de dados. No SQL Server 2012, os modelos de tabela não dão suporte a essa funcionalidade. Lógica de negócios A lógica de negócios pode adicionar um enorme valor a qualquer modelo de dados na forma de cálculos e regras de negócio que aprimoram dados para a análise do usuário final. As modelagens de tabela e multidimensional oferecem linguagens de fórmula sofisticadas para a implementação da lógica de negócios. A modelagem multidimensional usa a linguagem MDX, e modelagem de tabela usa a linguagem DAX. Antes de nos aprofundarmos em alguns dos cenários avançados de lógica de negócios de cada paradigma, é importante estabelecermos uma compreensão básica de como a lógica de negócios pode ser aplicada usando transformações em nível de linha, valores agregados e cálculos nas modelagens multidimensional e de tabela. Transformações em nível de linha Você talvez precise executar cálculos e transformações de dados que não estão prontamente disponíveis em sua fonte de dados. Por exemplo, seus dados de origem podem ter uma coluna Sales Amount e uma coluna Daily Exchange Rate, mas talvez não tenham as vendas convertidas para a moeda estrangeira, ou seus dados de origem podem ter Employee First Name e Employee Last Name, mas não ter um Employee Full Name concatenado. Observe que, nestes exemplos, o cálculo ou a manipulação de dados deverá ocorrer em dados em nível da linha, não agregados. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 10 Na modelagem multidimensional, as transformações em nível de linha em dados não agregados devem ser executadas antes que os dados sejam carregados no modelo, ou devem ser executadas quando o modelo é consultado. Você pode transformar atributos de dimensão, como nomes de funcionários, aplicando a transformação no sistema de fonte de dados ou escrevendo uma expressão SQL que seja aplicada quando o Analysis Services consultar o banco de dados de origem. As transformações em nível de linha de dados numéricos podem ser executadas com uma expressão SQL antes que os dados sejam carregados no Analysis Services, ou a transformação pode ser aplicada com uma expressão MDX em uma instrução Scope de forma que o cálculo seja aplicado em nível de linha. Se a transformação for aplicada antes que os dados sejam carregados, então o Analysis Services poderá agregar previamente os valores numéricos. Se a transformação for aplicada com uma instrução Scope, a agregação ocorrerá no momento da consulta. Na modelagem de tabela, as transformações em nível de linha são criadas com o uso de colunas calculadas. Ao criar uma coluna calculada, você adiciona a coluna a uma tabela específica em seu modelo e usa fórmulas DAX para definir os valores da coluna. A fórmula é então avaliada para cada registro dessa tabela e carregada na memória como qualquer outra coluna do modelo. Essa flexibilidade permite que você aprimore seus dados diretamente no modelo de tabela, baseado nos requisitos específicos de análise, e reduz a necessidade fazer ajustes em fontes de dados upstream que podem ou não acomodar suas alterações de maneira oportuna. As colunas calculadas oferecem uma maneira muito conveniente de criar e manter os cálculos que devem ser executados em um nível detalhado dos dados antes de serem agregados. Embora essa flexibilidade seja sofisticada, observe que as colunas calculadas não se destinam a executar a limpeza pesada de dados ou as transformações de dados que você encontraria nos processos ETL (extração, transformação e carregamento). Valores agregados Na modelagem multidimensional, você usa medidas para criar valores agregados. O mecanismo OLAP do Analysis Services agrega previamente as medidas de um cubo usando funções de agregação como SUM, COUNT, MIN, MAX, COUNT e DISTINCT, entre outras. Durante o processamento do cubo, cada medida é agregada de baixo para cima em todas as hierarquias. Como esse processamento acontece antes da análise do usuário final, as medidas previamente agregadas podem fornecer enormes benefícios para o desempenho da consulta. Quando você cria uma medida no cubo, há uma relação um-para-um entre uma medida do cubo e uma coluna numérica em seus dados de origem. Sendo assim, na modelagem multidimensional, as medidas são úteis quando você precisa executar a agregação de baixo para cima de elementos de dados numéricos que (1) existem em seus dados de origem no nível mais baixo de detalhe e (2) exigem um rollup que use uma das funções de agregação nativas do cubo. Na modelagem de tabela, você também usa medidas para criar valores agregados. Você cria uma medida selecionando uma coluna e, em seguida, especificando a função de agregação (SUM, COUNT, DISTINCT COUNT, MIN, MAX ou AVERAGE), ou pode escrever uma expressão DAX que especifique a função que você deseja usar para agregar a medida. Em um modelo de tabela, os dados em nível de linha são armazenados na memória e as agregações são calculadas na consulta. Como explicado na próxima seção, na modelagem de tabela, as medidas também podem ser usadas para aplicar cálculos. Isso pode incluir os cálculos baseados em várias colunas agregadas. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 11 Cálculos Na modelagem multidimensional, você usa a linguagem MDX para criar cálculos. MDX é uma linguagem de expressão e de consulta com funções que compreendem nativamente o design de dimensões, hierarquias, relações de atributos e medidas de um cubo. Essa compreensão nativa permite que você crie expressões sucintas e eficientes, que aplicam a lógica de negócios a vários contextos de dados. Você cria e armazena cálculos MDX no script de cálculo do cubo, onde pode controlar a ordem em que a lógica é aplicada. Os membros calculados são os cálculos MDX mais comuns, e são avaliados no momento da consulta, depois que os dados são previamente agregados. Os membros calculados podem ser criados em qualquer dimensão. Quando são criados na dimensão de medidas, eles são frequentemente chamados de medidas calculadas. Os membros calculados podem ser razoavelmente simples, com operações aritméticas básicas como vendas por unidade (vendas/unidade) ou gasto por pessoa (gasto/número de funcionários). Eles também podem ser mais complexos quando você precisa aplicar regras de negócio específicas, como Rolling 3 Period Average Sales ou YTD Margin. Por exemplo, se você quiser calcular vendas para o período atual como uma porcentagem do período pai, poderá usar o cálculo MDX a seguir. [Measures].[Sales Amount] / ([Date].[Calendar].CurrentMember.Parent,[Measures].[Sales Amount]) A criação de um membro calculado em uma dimensão diferente da dimensão de medidas adiciona um valor a um atributo na dimensão. Por exemplo, se você tivesse um atributo de dimensão contendo uma lista de cores, talvez quisesse adicionar as Cores Primárias de um membro calculado, que somariam os valores das cores vermelho, verde e azul. Na modelagem de tabela, a criação de uma medida é semelhante à criação de um membro calculado na dimensão de medidas em um modelo multidimensional. Nessa modelagem, você não pode adicionar um valor a uma coluna de uma tabela, portanto a modelagem de tabela não dá suporte ao equivalente à criação de um membro calculado em uma dimensão que não seja a dimensão de medidas em um modelo multidimensional. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 12 As atribuições de escopo são mais avançadas do que as medidas calculadas, mas também são mais eficientes. Como mencionado anteriormente na seção “Transformação em nível de linha”, você pode usar uma instrução Scope de forma que os cálculos sejam aplicados no nível de linha. No entanto, você também pode usar uma instrução Scope para especificar o intervalo de células do cubo onde deseja aplicar um cálculo. As atribuições de escopo são compiladas antes do momento da consulta, e permitem que o Analysis Services forneça um caminho de execução otimizado quando o cálculo é consultado. Devido à sua potência, as atribuições de escopo não só podem fazer o trabalho de várias medidas calculadas, como também fazem o trabalho com mais eficiência. Por exemplo, em uma solução de orçamento, você deseja atribuir o orçamento do próximo ano da região Leste como 90% do orçamento do ano atual, e quer que o novo orçamento da região Oeste seja de 75% do orçamento do ano atual. Você deseja que o novo orçamento da região Sul seja de 105% do orçamento do ano atual, e que o novo orçamento da região Norte seja igual ao orçamento do ano atual. Em vez de escrever uma única medida calculada complexa com instruções IF aninhadas ou várias medidas calculadas que separem cada cenário de orçamento individualmente, você pode usar atribuições de escopo para aplicar efetivamente essas taxas em nível de região e, em seguida, agregar os totais de dados. Por exemplo, se você quisesse converter o valor de venda em uma moeda estrangeira usando as taxas de câmbio diárias, poderia usar a seguinte expressão MDX: Scope([Date].[Date]); This = [Measures].[Sales Amount] * [Measures].[Daily FX Rate]; End Scope; Na modelagem de tabela, você usa a linguagem DAX para criar cálculos. Conforme mencionado anteriormente, na modelagem de tabela, você aplica cálculos em nível de linha criando colunas calculadas. Você também pode aplicar cálculos quando cria uma medida ao escrever uma expressão DAX. Como você usa explicitamente uma combinação de funções de agregação e em nível de linha DAX, as medidas em modelos de tabela são muito flexíveis. Você pode aplicar funções em nível de linha e depois aplicar uma função de agregação de forma que a medida aplique cálculos antes da agregação, ou pode aplicar funções de agregação primeiro e depois aplicar funções em nível de linha para que a medida aplique cálculos após as agregações. A linguagem DAX pode avaliar dinamicamente uma fórmula em diferentes contextos de dados (não apenas na exibição atual de uma planilha do Excel ou de uma Tabela Dinâmica) usando um conjunto especial de funções chamadas de funções FILTER. No sentido mais amplo, essas funções têm uma finalidade semelhante às atribuições de escopo do Analysis Services, pois permitem que você defina e execute um cálculo em um conjunto específico de linhas. Por exemplo, você pode usar funções FILTER para lidar com o exemplo de orçamento descrito anteriormente. Cenários de lógica de negócios Agora que você tem uma boa noção de como pode criar e aplicar lógica de negócios básica em MDX e DAX, considere os cenários de cálculo a seguir para comparar e estabelecer um contraste entre as experiências de modelagem de tabela e multidimensional. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 13 Lógica de hierarquia Como mencionado anteriormente, as hierarquias oferecem um meio de os usuários empresariais fazerem drill up ou drill down durante a análise de dados. Em algumas situações, é útil criar cálculos que naveguem na hierarquia. Por exemplo, considere uma dimensão de produto em que você tenha a categoria do produto, a subcategoria do produto e o produto. Para cada nível da hierarquia, você deseja adicionar um cálculo que meça como os membros de cada nível contribuem para o total de vendas do pai. Isso é chamado de cálculo de porcentagem de pai, uma vez que deve navegar pela hierarquia para retornar o valor desejado. As linguagens MDX e DAX oferecem funções para o trabalho com dados organizados em uma hierarquia e a criação de cálculos como a porcentagem de pai; porém, as funções MDX tendem a ser mais simples e fáceis de usar. Por exemplo, na linguagem MDX, esta é a expressão que fornece a porcentagem de pai na dimensão Product. [Measures].[Sales Amount] / ([Product].[Product Categories].CurrentMember.Parent, [Measures].[Sales Amount]) Esta expressão mais complexa é necessária para criar o cálculo da mesma porcentagem de pai usando DAX. IF( ISFILTERED(Product[Product]) ,[Sales]/CALCULATE([Sales],ALL(Product[Product])) ,IF( ISFILTERED(Product[Subcategory]) ,[Sales]/CALCULATE([Sales],ALL(Product[Subcategory])) ,1 ) ) Rollups personalizados Embora o resumo uniforme de dados seja aplicável em muitos cenários, também há situações em que você deseja ter o controle mais apurado de como seus dados são acumulados. Um exemplo disso é o caso dos modelos financeiros, onde você tem um plano de contas (normalmente em um formato pai-filho) com a lógica de rollup específica necessária para cada conta. Como mostrado aqui, o cálculo de Margem Bruta é Vendas Líquidas menos o Custo Total de Vendas, e o cálculo de Lucro Operacional é Margem Bruta menos Despesas Operacionais. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 14 Não apenas os modelos multidimensionais fornecem suporte nativo a hierarquias pai-filho, como também fornecem inteligência de conta interna, o que permite aplicar facilmente operadores unários e fórmulas MDX nas contas que orientam o rollup de dados. Em modelos de tabela, a inteligência pai-filho ou de conta não é interna, mas você pode criar sua própria solução usando uma combinação de colunas e medidas calculadas para criar a hierarquia pai-filho e aplicar o rollup personalizado. Medidas semiaditivas Em linhas gerais, as medidas semiaditivas são aquelas que agregam uniformemente em todas as dimensões, com exceção de data. Os exemplos de medidas semiaditivas incluem o saldo de abertura e o saldo de fechamento. Para essas medidas, você deseja aplicar lógica especial para resumir corretamente os dados por período. Afinal, o saldo de estoque disponível para o mês de março não é a soma do estoque disponível para todos os dias de março. Além disso, esse saldo também deve funcionar corretamente em todos os atributos de data, como trimestre e ano. Por exemplo, o estoque disponível do primeiro trimestre deve ser igual ao saldo informado em 31 de março (supondo que 31 de março seja o último dia do primeiro trimestre). Os modelos multidimensionais oferecem suporte pronto para uso a medidas semiaditivas com funções de agregação especiais, como First Child, Last Child, FirstNonEmptyChild e LastNonEmptyChild. Se essas funções de agregação não satisfizerem seus requisitos de lógica específicos, você também poderá escrever fórmulas MDX personalizadas. Os modelos de tabela fornecem funções semelhantes, como ClosingBalanceMonth e OpeningBalanceMonth. Existem funções adicionais que se aplicam em outros atributos de data, como trimestre e ano. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 15 Inteligência de dados temporais Quase todas as soluções de BI que você encontrar exigirão a inteligência de dados temporais, que inclui a capacidade de calcular resumos acumulados no ano até a data e executar comparações com o ano anterior. As linguagens MDX e DAX fornecem funções de série temporal; entretanto, cada uma usa um design de modelo de dados ligeiramente diferente. Os modelos multidimensionais fornecem inteligência de dados temporais pronta para uso por meio do Assistente de Business Intelligence do Analysis Services. Usando esse assistente, os cálculos de tempo podem ser adicionados ao design da dimensão de tempo e também ser aplicados a todas as medidas no modelo. Embora o uso do assistente seja uma maneira de criar cálculos de tempo, você também pode escrever seus próprios cálculos MDX no modelo multidimensional. Em modelos de tabela, embora não haja um assistente para criar cálculos de inteligência de dados temporais, você poderá criar cálculos manualmente criando fórmulas DAX que usem uma variedade de funções, incluindo TOTALMTD e TOTALYTD, além de SAMEPERIODSLASTYEAR. KPIs Os KPIs (indicadores chave de desempenho) identificam as medidas especiais que você deseja monitorar em relação a um valor de destino usando um indicador visual, como um sinal de trânsito. Os modelos multidimensional e de tabela dão suporte a KPIs. Ambos oferecem a capacidade de atribuir uma meta para uma medida e usar a comparação do valor real com meta para avaliar o status de desempenho da medida. Os modelos multidimensionais oferecem a capacidade adicional de avaliar a tendência do KPI e atribuir um indicador visual separado para representar o desempenho do KPI ao longo do tempo. Conversão de moeda As conversões de moeda exigem que você converta dados de uma ou mais moedas de origem em uma ou mais moedas de relatório. Por exemplo, se sua organização processa transações de vendas em EUR, JPY e USD, para consolidar o relatório de vendas na organização inteira, você precisará converter as transações de vendas em uma ou mais moedas de relatório. Para implementar conversões de moeda em qualquer experiência de modelagem, você deverá ter acesso aos dados de taxa de câmbio da moeda e incluir esses dados em seu modelo. Em modelos multidimensionais, você pode usar o Assistente de Business Intelligence do Analysis Services para criar cálculos de conversão de moeda MDX que são otimizados para dar suporte a várias moedas de origem e de relatório. Em um modelo de tabela, é possível criar sua própria solução de conversão de moeda criando fórmulas DAX. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 16 Conjuntos nomeados Na modelagem multidimensional, os conjuntos nomeados oferecem uma maneira de retornar um conjunto de membros de dimensão que são frequentemente usados em aplicativos de relatório. Por exemplo, talvez você queira criar um conjunto nomeado para retornar os últimos 12 meses. A criação desse conjunto nomeado dentro do cubo permite que você defina centralmente a lógica de conjunto, para acessar o conjunto de qualquer aplicativo de relatório e para simplificar a lógica armazenada em seu aplicativo de relatório. Para criar o conjunto nomeado Last 12 Months, você poderia usar a expressão MDX a seguir. Create Set CurrentCube.[Last 12 Months] As Max([Date].[Calendar].[Month]).Lag(11):Max([Date].[Calendar].[Month]) Os conjuntos nomeados não estão disponíveis na modelagem de tabela. Acesso a dados e armazenamento Desempenho e escalabilidade O desempenho e a escalabilidade são os fatores importantes que devem ser considerados para o êxito de qualquer solução de BI. Como cada uma das experiências de modelagem utiliza diferentes tecnologias subjacentes, elas têm características de desempenho e comportamentos diferentes que você deve compreender para considerar corretamente qual experiência de modelagem se adapta melhor às suas necessidades. Modelos multidimensionais Conforme mencionado anteriormente no white paper, os modelos multidimensionais do Analysis Services usam um mecanismo OLAP. Em disco, os dados OLAP podem ser armazenados em arquiteturas de dados MOLAP e ROLAP. Em MOLAP, os dados são armazenados em disco em um formato multidimensional otimizado com compactação 3x típica. Em ROLAP, os dados são armazenados no banco de dados relacional de origem. Quando você pensa em desempenho, geralmente é útil considerá-lo em dois segmentos: desempenho de consulta e desempenho de processamento. Desempenho de consulta O desempenho de consulta afeta diretamente a qualidade da experiência do usuário final. Como tal, ele é o principal parâmetro usado para avaliar o êxito de uma implementação OLAP. O Analysis Services fornece uma variedade de mecanismos para acelerar o desempenho de consulta, incluindo agregações, cache e recuperação de dados indexada. Além disso, você pode melhorar o desempenho de consulta otimizando o design de seus atributos de dimensão, cubos e consultas MDX. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 17 Uma das principais formas de otimizar o desempenho de consulta é o uso de agregações. Uma agregação é um resumo pré-calculado de dados usado para aprimorar o desempenho de consulta em modelos multidimensionais. Ao consultar um modelo multidimensional, o processador de consulta do Analysis Services decompõe a consulta em solicitações para o mecanismo de armazenamento OLAP. Para cada solicitação, o mecanismo de armazenamento primeiro tenta recuperar dados do cache do mecanismo de armazenamento na memória. Se não houver dados disponíveis no cache, ele tentará recuperar dados de uma agregação. Se nenhuma agregação estiver presente, ele recuperará os dados das partições de um grupo de medidas. O design de agregações de dados envolve a identificação do esquema de agregação muito mais eficiente para sua carga de trabalho de consulta. Quando você projetar agregações, deverá considerar os benefícios de consulta que as agregações oferecem comparados com o tempo necessário para criar e atualizar as agregações. De fato, a adição de agregações desnecessárias pode piorar o desempenho de consulta, pois as ocorrências raras movem a agregação para o cache de arquivos ao custo de mover mais alguma coisa. O cache também é importante para o ajuste do desempenho de consulta do Analysis Services. Você deve ter memória suficiente para armazenar todos os dados da dimensão, além de espaço para armazenar em cache os resultados da consulta. Durante a consulta, a memória é usada principalmente para armazenar os resultados armazenados nos caches do processador de consulta e do mecanismo de armazenamento. Para otimizar os benefícios do cache, muitas vezes você poderá aumentar a capacidade de resposta da consulta ao pré-carregar dados em um ou em ambos os caches. Isso pode ser feito com a execução prévia de uma ou mais consultas ou o uso de uma instrução do cache de criação. Desempenho de processamento O processamento é a operação que atualiza dados em um banco de dados do Analysis Services. Quanto mais rápido for o desempenho de processamento, mais cedo os usuários poderão acessar dados atualizados. O Analysis Services fornece uma variedade de mecanismos que você pode usar para influenciar no desempenho do processamento, incluindo o design eficiente de dimensão, agregações efetivas, partições e uma estratégia de processamento econômica (por exemplo, incremental versus atualização completa versus cache pró-ativo). Você pode usar partições para separar dados de medidas (normalmente dados da tabela de fatos) em unidades físicas. O uso mais eficiente de partições pode melhorar o desempenho da consulta, melhorar o desempenho do processamento e facilitar o gerenciamento de dados. Para cada partição, você poderá ter um design de agregação separado e uma agenda de atualização separada, o que pode otimizar muito o desempenho do processamento. Para cada tabela de fatos, você também pode ter uma combinação de partições MOLAP e ROLAP. Esse tipo de estratégia de particionamento pode ser usado para fornecer consultas em tempo real ou pode ser usado para fornecer acesso a conjuntos de dados muito grandes para serem processados em um cubo. O uso de técnicas de otimização de consulta e de processamento como essas pode ajudar você a dimensionar seus modelos multidimensionais para lidar com terabytes de dados. Para saber mais sobre o ajuste de desempenho, consulte Guia de desempenho do Analysis Services 2008 R2 (http://sqlcat.com/sqlcat/b/whitepapers/archive/ 2011/10/10/analysis-services-2008-r2-performance-guide.aspx). Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 18 Modelos de tabela Os modelos de tabela usam o mecanismo de análise xVelocity, que fornece processamento de dados em memória, ou DirectQuery, que transmite consultas para o banco de dados de origem para aproveitar os recursos de processamento de consulta. Os benefícios dos bancos de dados em coluna e do processamento de dados na memória são usados em conjunto. Os bancos de dados em coluna obtêm uma compactação maior do que o armazenamento tradicional, normalmente a compactação de 10x, dependendo da cardinalidade dos dados. A cardinalidade de dados se concentra na caracterização da distribuição de dados em uma única coluna. Alta cardinalidade de dados significa que os valores de dados em uma coluna são altamente exclusivos (por exemplo, o número do cliente). Baixa cardinalidade de dados significa que os valores de dados em uma coluna podem se repetir (por exemplo, sexo e estado civil). Quanto mais baixa a cardinalidade dos dados, maior será a compactação, o que significa que mais dados podem caber na memória em um determinado momento. Como modeladores de dados, é importante entender a cardinalidade dos dados para determinar quais conjuntos de dados são mais adequados para seu modelo de tabela, bem como os requisitos de memória associados para dar suporte ao modelo. Desempenho de consulta Quando um usuário consulta um modelo de tabela, o mecanismo executa varreduras de memória para recuperar os dados e para calcular agregações dinamicamente sem a necessidade de processamento de E/S do disco. Essa abordagem pode oferecer um desempenho muito alto de consulta sem exigir ajuste especial e gerenciamento de agregação. A maneira mais fácil de otimizar o desempenho de consulta para modelos de tabela é maximizar a memória disponível. De uma perspectiva de escalabilidade, o volume de dados é limitado em sua maior parte pela memória física. É altamente recomendável que você forneça memória suficiente para conter todos os dados dos seu modelo de tabela. Em cenários onde a memória é restrita, o mecanismo em memória também fornece suporte básico de paginação de acordo com a memória física. Além disso, há parâmetros de configuração do lado do servidor que permitem à equipe de TI gerenciar mais de perto a memória disponível para os modelos de tabela. Para saber mais sobre a configuração de memória do modelo de tabela, consulte Propriedades de memória (http://msdn.microsoft.com/pt-br/library/ms174514.aspx). Desempenho de processamento Os modelos de tabela oferecem duas diferenças básicas de desempenho de processamento em relação aos modelos multidimensionais: Ao contrário dos modelos multidimensionais, os modelos de tabela carregam dados diretamente na memória e não exigem a gravação de dados em disco Como os modelos de tabela não categorizam dados em dimensões e em grupos de medidas, o processamento pode ser muito mais flexível. Ambas as diferenças significam que há menos sobrecarga a cada atualização de dados, o que, por sua vez, pode permitir tempos de resposta mais rápidos e uma agilidade maior. Considere este exemplo. Em sua organização, é comum que representantes de venda viajem de uma região para outra regularmente. Os usuários empresariais desejam ver os dados de vendas acumulados pelas atribuições mais recentes do representante de vendas e da região. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 19 Em um modelo multidimensional, para realizar essa tarefa, você deve atualizar primeiro a dimensão da sua organização de vendas. Depois que a dimensão de organização de vendas tiver sido atualizada, você deverá atualizar a partição do grupo de medidas de vendas. A atualização da partição de vendas atualiza os dados detalhados e as agregações. A etapa final na preparação de dados (como uma prática recomendada) é aquecer o cache de consulta do Analysis Services para recuperar os dados mais úteis do disco na memória. Dependendo de seu design de modelo de dados, do tamanho dos dados e da sua opção específica em técnicas de processamento (processamento incremental versus completo), isso poderia levar minutos ou horas. A boa notícia é que há diversas técnicas comprovadas usadas diariamente por profissionais de BI para otimizar a superfície de processamento de modelos multidimensionais à medida que eles equilibram os requisitos de processamento de dados com as demandas de disponibilidade de dados. Agora considere o mesmo cenário em um modelo de tabela. No modelo de tabela, não há nenhum conceito de dimensões e de grupos de medidas. Em vez disso, os dados são organizados em tabelas com relações entre si. Suponha que os dados da organização de vendas e os dados de vendas estejam cada um em suas respectivas tabelas com uma relação baseada no representante de vendas individual. Com esse design, quando você atualiza sua tabela de organização de vendas, atualiza automaticamente as colunas calculadas, as relações e as hierarquias de usuários. Isso significa que os dados de vendas refletem automaticamente os rollups da região de vendas atualizados, sem a necessidade de processar novamente os dados de vendas. Essa flexibilidade pode oferecer benefícios significativos quando você tem dimensões rapidamente variáveis e precisa que os dados reflitam as atualizações mais recentes. Além disso, observe que, em modelos de tabela, também não é necessário criar agregações, gravar dados em disco ou aquecer o cache de consultas para colocar os dados na memória. Com os modelos de tabela, os dados são movidos do disco diretamente para a memória e estão prontos. De modo semelhante aos modelos multidimensionais, os modelos de tabela permitem que você divida seus dados de tabela em partições, eliminando a necessidade de processamento de dados desnecessário. Por exemplo, você pode dividir tabelas maiores em várias partições, como uma partição mensal para cada mês do ano atual e uma partição anual para cada um dos anos anteriores. Essa abordagem permite isolar as partições de processamento que exigem uma atualização. Ao contrário dos modelos multidimensionais, observe que, embora você possa processar várias tabelas em paralelo, não poderá processar partições da tabela de um indivíduo em paralelo. DirectQuery Como uma alternativa ao modo em memória xVelocity dos modelos de tabela, os profissionais de BI também podem criar modelos de tabela usando o modo DirectQuery, que está disponível para modelos de tabela com fontes de dados do SQL Server. O DirectQuery oferece o recurso de ignorar o processamento de dados passando consultas e cálculos DAX para o banco de dados de origem para aproveitar os recursos do SQL Server. Isso pode ser útil principalmente com grandes volumes de dados que exijam atualização frequente. Entretanto, com o DirectQuery, não há suporte para colunas calculadas e algumas funções DAX. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 20 Programação AMO (Objetos de Gerenciamento de Análise) é a API para desenvolver e gerenciar objetos do Analysis Services. Essa API foi criada antes de a modelagem de tabela ter sido adicionada ao Analysis Services e, portanto, só contém classes para objetos tradicionalmente associados à modelagem multidimensional: cubos, dimensões, grupos de medidas, scripts MDX e assim por diante. No entanto, essa API também pode ser usada para o desenvolvimento e o gerenciamento de modelos de tabela. Esse é um benefício de as modelagens multidimensional e tabular serem encapsuladas pelo Modelo Semântico de BI. Embora os modelos de tabela e dimensional sejam distintos internamente, o BISM apresenta a mesma interface externa. Apesar de você poder usar AMO para programar modelos de tabela e multidimensional, sua interface é menos intuitiva para modelos de tabela. Para obter mais informações, incluindo um exemplo de código AMO de modelo de tabela, consulte Tutoriais do Analysis Services (http://msdn.microsoft.com/pt-br/library/hh231701.aspx) Segurança Ter uma estratégia de segurança de dados apropriada é importante para garantir que as pessoas certas tenham acesso aos dados certos. As organizações devem controlar o acesso aos dados para manter seus ativos de dados seguros e cumprir os regulamentos de privacidade. Ambos os modelos, multidimensional e de tabela, oferecem um conjunto de recursos robustos que satisfazem uma ampla variedade de requisitos de segurança. Os recursos apresentam diferenças sutis, os quais você deve compreender antes de escolher a experiência de modelagem que melhor atenda às suas necessidades de segurança. No Analysis Services, você gerencia a segurança de projetos multidimensionais e de tabela criando uma função e concedendo permissões a ela. Em seguida, você adiciona nomes de usuários e grupos do Windows à função, permitindo assim o acesso de usuários correspondentes com base nas permissões da função. Segurança em nível de linha/atributo Em um projeto multidimensional, você usa o conceito de segurança de dados de dimensão para gerenciar o acesso em nível de linha. Para implementar a segurança de dados de dimensão para uma função, você concede ou nega o acesso aos dados da dimensão marcando ou desmarcando membros da dimensão. Você também pode implementar uma configuração de segurança mais complexa ao definir um conjunto de membros usando uma expressão MDX. Além disso, você especifica se a função deve ter o acesso concedido ou negado aos novos membros da dimensão. O acesso concedido ou negado a um membro da dimensão afeta o acesso que uma função terá aos membros da dimensão relacionados. Por exemplo, se você limitar uma função de forma que ela só acesse a subcategoria de produto Mountain Bikes, os membros da função só poderão exibir a categoria de produto Bicicletas e os produtos e as vendas pertencentes à subcategoria Mountain Bikes. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 21 Em um projeto de tabela, você implementa a segurança em nível de linha concedendo acesso às linhas de uma tabela. Em um projeto de tabela do SQL Server Data Tools, você concede permissão inserindo uma expressão DAX que filtra as linhas de uma tabela. A função terá acesso às novas linhas da tabela se elas satisfizerem o filtro DAX. O acesso concedido a uma linha de uma tabela afeta o acesso que uma função tem às linhas de tabelas relacionadas. Se duas tabelas tiverem uma relação um-para-muitos, os filtros de linha da tabela no lado 'um' da relação filtrarão linhas da tabela no lado 'muitos' da relação, mas não no sentido contrário. Por exemplo, se você limitar uma função de forma que ela só exiba a linha Mountain Bikes na tabela de subcategoria do produto, os membros da função só poderão exibir linhas nas tabelas de produtos e de vendas relacionadas à subcategoria Bicicletas. No entanto, os membros da função ainda podem exibir todas as linhas da tabela de categorias de produto (bicicletas, roupas e assim por diante). Segurança dinâmica Sua organização pode precisar limitar o acesso aos dados com base em uma ID de usuário ou em outros critérios dinâmicos. Por exemplo, os associados só poderão ver seus próprios dados de desempenho e RH. Entretanto, a criação de uma função de segurança para cada indivíduo em uma organização pode ser impraticável. Em vez disso, você pode implementar a segurança dinâmica, que oferece o recurso de orientar a lógica de segurança com base em uma ID de usuário ou em outros critérios dinâmicos. Os projetos de tabela e multidimensional dão suporte à segurança dinâmica. Você poderá configurar a segurança dinâmica baseada em usuário se seus dados contiverem uma relação entre as IDs de usuário e os dados que os usuários têm permissão de acessar incluindo a relação na expressão MDX ou DAX que estiver usando para gerenciar permissões. Segurança em nível da célula e avançada Para muitos aplicativos, há uma necessidade de restringir o acesso a dados usando critérios mais complexos do que simplesmente uma linha em uma tabela. Faça, por exemplo, uma pesquisa de satisfação do funcionário que compartilhe resultados agregados de uma pesquisa de feedback. Esses modelos geralmente contêm dados altamente confidenciais, e as respostas individuais da pesquisa devem ser protegidas. Embora o modelo possa não conter nomes de pessoas, com um tamanho de amostra pequeno o suficiente, a identidade dos entrevistados individuais poderia ser derivada. Nesses casos, talvez você queira implementar uma lógica mais complexa que examine o tamanho da amostra e só permita o acesso à medida resultante se o número de respostas for maior do que uma determinada contagem de respostas. Além disso, pode haver perguntas específicas e combinações de métricas que você queira restringir especificamente ao RH. Os projetos multidimensionais permitem nativamente que você implemente recursos avançados de segurança não disponíveis em um projeto de tabela. Em um projeto multidimensional, você pode implementar a segurança em nível de célula para restringir o acesso a uma célula ou a um grupo de células específico em seu modelo. A segurança em nível de célula não é fornecida em um modelo de tabela. Além disso, os projetos multidimensionais também permitem controlar o uso de totais visuais, conceder ou negar permissão para detalhar os dados e criar membros padrão para cada função. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 22 Em um projeto multidimensional, os valores resumidos agregados previamente são calculados quando os dados são processados em um modelo para melhorar os tempos de resposta da consulta. Por exemplo, Vendas de Todos os Produtos é um valor précalculado. A segurança dos dados de dimensão é aplicada após o processamento dos dados e, portanto, se um usuário só tiver permissão para acessar a categoria Bicicletas, por padrão o valor de Vendas de Todos os Produtos será a soma de vendas de acessórios, bicicletas, roupas e assim por diante. Isso pode ou não ser o valor que você deseja que membros da função vejam. Nesse caso, se você quiser que o valor de Vendas de Todos os Produtos esteja limitado ao valor de vendas de bicicletas, deverá habilitar os totais visuais. A habilitação de totais visuais restringe os valores resumidos de modo que eles sejam iguais à soma dos valores detalhados para os quais uma função tem permissão de acesso. Essa alteração afeta o tempo de resposta da consulta, porque os valores resumidos devem ser calculados no momento da consulta. Os projetos de tabela não calculam previamente valores resumidos e, portanto, os valores resumidos são sempre iguais à soma de valores detalhados, ou seja, os totais visuais estão sempre habilitados em um modelo de tabela. Em um modelo multidimensional, você pode habilitar a permissão para detalhar os dados para cada função. Em um modelo de tabela, as funções não são usadas para controlar o acesso ao recurso de detalhamento. Em vez disso, todas as funções são capazes de detalhar. Em um modelo multidimensional, você pode especificar um membro padrão para cada atributo em uma dimensão. Um membro padrão se comporta como um filtro que é aplicado automaticamente. Por exemplo, se o membro padrão de ano for 2012, então, por padrão, apenas os dados de 2012 serão exibidos. No entanto, um usuário pode optar por consultar dados de um ano diferente ou consultar dados de todos os anos. Em um modelo multidimensional, você pode configurar um membro padrão para cada atributo que se aplique a todas as funções ou pode especificar um membro padrão diferente para cada função. Em um modelo de tabela, você não pode especificar um valor padrão. Em vez disso, se desejar um filtro padrão, deverá configurar esse recurso em sua ferramenta de relatórios e análise. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 23 Resumo No SQL Server 2012, a Microsoft introduziu o BISM (Business Intelligence Semantic Model) para dar suporte a diversas necessidades de relatório e análise. As duas experiências de modelagem encapsuladas no BISM, modelagem multidimensional e de tabela, fornecem os recursos complementares que permitem a você aproveitar os recursos que melhor atendam às suas necessidades. A modelagem de tabela proporciona uma experiência de modelagem prontamente acessível, com recursos de relatório que atenderão à maioria das necessidades da análise. A maioria dos usuários está acostumada a trabalhar com tabelas e relações e aprende rapidamente a implementar a lógica de negócios usando a linguagem DAX, semelhante ao Excel. A facilidade de uso e a modelagem simplificada e flexível fornecidas pela experiência de tabela significam que as soluções podem ser desenvolvidas com rapidez. O mecanismo xVelocity, na memória e baseado em colunas, oferece resposta de consulta extremamente rápida para conjuntos de dados que podem conter bilhões de registros. Os modelos de tabela dão suporte a todas as ferramentas de relatório e análise que geram consultas MDX, como o Excel e o Reporting Services, e também ao Power View do Reporting Services, que gera consultas DAX. A modelagem multidimensional fornece extensos recursos para ajudá-lo a gerenciar seus desafios mais complexos e seus maiores desafios de BI. O modelo de dados multidimensional combinado a uma linguagem MDX fornece funcionalidade pronta para uso, para que você possa criar modelos personalizados sofisticados e implementar lógica de negócios complexa. O armazenamento de dados em disco, as agregações pré-calculadas e o cache em memória permitem que os modelos multidimensionais cresçam até a escala de vários terabytes e ofereçam respostas rápida a consultas. Com a segurança em nível de célula, você pode atender aos requisitos de segurança mais rigorosos. Em resumo, a modelagem de tabela oferece uma experiência de modelagem simplificada com recursos que devem atender à maioria das suas necessidades de relatório e análise. Se você necessitar de modelagem, lógica de negócios ou segurança complexas, ou se precisar de uma solução em escala muito grande, a modelagem multidimensional poderá ser a melhor solução para suas necessidades. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 24 A tabela a seguir fornece uma comparação resumida das características dos modelos multidimensional e de tabela. Grupo de recursos Critérios para a decisão Tempo da solução Curva de aprendizagem Multidimensional/ de tabela / / Modelo de dados Relações de dados / Modelo de dados Hierarquias / Modelo de dados Lógica de negócios Lógica de negócios Lógica de negócios Recursos de modelagem de dados adicionais Linguagem de cálculo Cálculos / / / Funções de agregação / Modelagem multidimensional Tempo maior da solução. A modelagem dimensional e a linguagem MDX criam uma curva de aprendizagem mais acentuada, mas fornecem recursos mais complexos nativamente. Um-para-muitos. Muitos-para-muitos. As relações de referência devem ser modeladas explicitamente. Suporte nativo para hierarquias padrão, desbalanceadas e pai-filho Perspectivas, traduções, ações, detalhamento, procedimentos armazenados e write-back. MDX Suporte nativo para cálculos comuns e complexos. Sum, Count, Min, Max, Distinct Count, None, ByAccount, AverageOfChildren, FirstChild, LastChild, FirstNonEmpty e LastNonEmpty. Modelagem de tabela Tempo menor da solução. A modelagem relacional e a linguagem DAX, semelhante ao Excel, criam uma curva de aprendizagem menos acentuada, mas os recursos complexos podem exigir expressões DAX sofisticadas. Um-para-muitos. Muitos-para-muitos exige expressões DAX. As relações da modelagem de tabela criam relações de referência. Suporte nativo para hierarquias padrão. As hierarquias pai-filho exigem expressões DAX. Perspectivas e detalhamento. DAX Suporte nativo para cálculos comuns e muito complexos. Sum, Count, Min, Max, Average, DistinctCount e diversas funções de inteligência de dados temporais, como FirstDate, LastDate, OpeningBalanceMonth e ClosingBalanceMonth. Grupo de recursos Lógica de negócios Critérios para a decisão Lógica de hierarquia Multidimensional/ de tabela Modelagem multidimensional Funções para navegar por hierarquias padrão e pai-filho. / Lógica de negócios KPIs Lógica de negócios Conversão de moeda Acesso a dados e armazenamento Acesso a dados e armazenamento Escala / / / Desempenho / Acesso a dados e armazenamento Fontes de dados Acesso a dados e armazenamento Linguagem de consulta Real, meta, status e tendência, com indicadores gráficos Oferece suporte à conversão de várias moedas usando o Assistente de Business Intelligence. Escala extremamente grande (vários terabytes) Índices e valores de medida préagregada armazenados em disco. Dados de dimensão e resultados de consultas armazenados em cache na memória. Compactação de dados de aproximadamente 3x. Bancos de dados relacionais / / MDX Modelagem de tabela Funções DAX para navegar por hierarquias pai-filho, expressões DAX para implementar lógica em dimensões padrão. A lógica de hierarquia geralmente é mais difícil usando DAX. Real, meta e status, com indicadores gráficos. Implemente usando expressões DAX. Grande escala (bilhões de registros) Armazenamento de dados baseado em coluna na memória. Compactação de dados de aproximadamente 10x. Bancos de dados relacionais, Excel, Texto, feeds OData, Azure Data Market, Analysis Services. DAX MDX (somente modo Na Memória) Grupo de recursos Acesso a dados e armazenamento Critérios para a decisão Armazenamento de dados Multidimensional/ de tabela / Acesso a dados e armazenamento Acesso a dados e armazenamento Compactação de dados Ferramentas de cliente / / Acesso a dados e armazenamento Programação Segurança Segurança / / - menos recursos. - mais recursos. Modelagem multidimensional MOLAP - dimensão, fatos e dados agregados armazenados em disco. Dados de dimensão e resultados de consultas armazenados em cache na memória. ROLAP – dimensão, fato e dados agregados armazenados em um banco de dados relacional. Normalmente 3x. Excel, Reporting Services, Microsoft PerformancePoint e outras ferramentas de cliente de terceiros. Power View do Reporting Services com suporte em versões futuras do SQL Server. XMLA, ASSL, ADOMD.NET, MSOLAP, AMO, Windows PowerShell para AMO. Desenvolvido para uso com modelos multidimensionais. Segurança de membros da dimensão e em nível de célula Segurança dinâmica. Modelagem de tabela Na Memória - todos os dados armazenados em cache na memória utilizando o mecanismo analítico baseado em colunas do xVelocity DirectQuery – dados armazenados no SQL Server 2012. Normalmente 10x. Power View do Reporting Services, Excel, Reporting Services, Microsoft PerformancePoint e outras ferramentas de cliente de terceiros. XMLA, ASSL, ADOMD.NET, MSOLAP, AMO, PowerShell para AMO. Disponível, mas menos intuitivo para uso com modelos de tabela. Segurança em nível de linha. Segurança dinâmica. Para saber mais Site do SQL Server http://www.microsoft.com/sqlserver/ SQL Server TechCenter http://technet.microsoft.com/pt-br/sqlserver/ SQL Server DevCenter http://msdn.microsoft.com/pt-br/sqlserver/ Blog da equipe do Analysis Services e do PowerPivot http://blogs.msdn.com/b/analysisservices/ Analysis Services http://msdn.microsoft.com/pt-br/library/bb522607.aspx Modelagem multidimensional (SSAS) http://msdn.microsoft.com/pt-br/library/hh230904.aspx Modelagem de tabela (SSAS de tabela) http://msdn.microsoft.com/pt-br/library/hh212945.aspx Recursos por modo de servidor ou tipo de solução (SSAS) http://msdn.microsoft.com/pt-br/library/hh212940(v=sql.110).aspx Este white paper ajudou você? Envie seus comentários. Em uma escala de 1 (ruim) a 5 (excelente), como você classificaria este white paper e por quê? Por exemplo: Você escolheu uma classificação alta porque ele tem bons exemplos, excelentes capturas de tela, clareza do texto ou por outro motivo? Você escolheu uma classificação baixa devido a exemplos insatisfatórios, capturas de tela confusas ou texto confuso? Os comentários nos ajudam a melhorar a qualidade dos white papers que lançamos. Enviar comentários. Escolhendo um paradigma de modelagem de dados no SQL Server 2012 Analysis Services 28