none
Olap Parameter RRS feed

  • Pergunta

  • Gelara,

    Gostaria de saber se existe alguma forma de melhorar a performance de parametros olap.

    Tipo, estou usando uma dimensão geográfica, onde nesta dimensão tenho 5 atributos:Região, Estado, Mesorregião, Microrregião e Município.

    Neste caso criei 5 datasets onde cada dataset me traz a informação de cada um desses atributos baseado no filtro anterior.O problema é que quando eu filtro a região está demorando muito para carregar os dados dos outros datasets. em torno de 15 segundos.

    Existe alguma forma de melhorar a performance desse tipo de parametro. Segue exemplo de mdx que estou usando nos dadasets

    Parametro Regiao:

    WITH
    MEMBER [Measures].[Name] as [Geographic].[Regiao].CurrentMember.Name
    MEMBER [Measures].[UniqueName] as [Geographic].[Regiao].CurrentMember.UniqueName

    SELECT {[Measures].[name], [Measures].[UniqueName] } ON COLUMNS,
    NON EMPTY { [Geographic].[Region].[Region].allmembers } ON ROWS
    FROM [CUBO]

     Parametro Estado:

    WITH
    MEMBER [Measures].[Name] as [Geographic].[Estado].CurrentMember.Name
    MEMBER [Measures].[UniqueName] as [Geographic].[Estado].CurrentMember.UniqueName
    SELECT {[Measures].[name], [Measures].[UniqueName] } ON COLUMNS,
    NON EMPTY { [Geographic].[State].[State].allmembers } ON ROWS
    FROM (SELECT strtoset(@pRegiao,CONSTRAINED) on 0 from [CUBO])

    Any advice?

    quinta-feira, 19 de janeiro de 2012 12:25

Todas as Respostas

  •   Arthur, boa tarde,

    As soluções de otimização de perfomance em relação ao analysis services é bastante pontual para cada contexto. Já me deparei em alguns casos que precisei realizar uma melhoria de perfomance e cada caso foi uma mudança específico que foi desde de uma alteração simples no mdx até a mudança de hardware. Para entender melhor o seu contexto vou te fazer algumas perguntas. Aí vai:

    1 - Vc disse que o problema é quando vc seleciona a região, todos os demais parâmetros demoram pra carregar certo? para cada parâmetro, qual o número máximo de ocorrências para o preenchimento de cada combo no parâmetro?

    2 - Já realizou o teste no servidor? Pergunto isto, pois se a lentidão está no ambiente de desenvolvimento às vezes o problema é hardware. Já me aconteceu casos em que o tempo para geração do relatório na minha máquina de desenvolvimento era 3 vezes mais do que o processamento em servidor

    3 - Percebi que na sua query mdx vc sempre cria um membro. Seria mesmo necessário?

    E se vc colocasse apenas a seguinte query:

    SELECT {[Measures].[name], [Measures].[UniqueName] } ON COLUMNS,
    NON EMPTY { [Geographic].[State].[State].allmembers } ON ROWS
    FROM (SELECT strtoset(@pRegiao,CONSTRAINED) on 0 from [CUBO]

    será que apenas assim funcionaria?

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    quinta-feira, 19 de janeiro de 2012 17:10
  • Arthur, de uma olhada nesse artigo do Cris Webb, http://cwebbbi.wordpress.com/2010/05/09/tuning-ssrs-generated-mdx-parameter-queries/ , ele explica como melhorar a performance com paramentros MDX, acho que pode ajudar seu problema! É fantastico eu ganhei muita perfomance depois que comecei a utilizar essa tecnica.

    Espero que ajude...

    Eu nao sei como vc está mostrando essa informação, mas caso queria mostrar em mapa, eu fiz um artigo sobre isso, http://social.technet.microsoft.com/wiki/contents/articles/5321.aspx

    Espero que goste!!

    []'s

    domingo, 22 de janeiro de 2012 23:19
  • No meu caso a dimensão está desnormalizada, nesse caso minha tabela de dimensão possi 5665 linhas, que é o total de municípios. Estou realizando a criação dos dashboards no ambiente de desenvolvimento. Vou ter a oportunidade de testar em produção em 2 semanas.

    Fiz a redução da query para reduzir o número de colunas mas não tive um ganho expressivo. A questão é que é uma sequencia encadeada: região filtra estado que filtra mesorregião que filtra microrregião que filtra município. tudo isso "on the fly".

     

    Valeu pelas dicas brother.

    segunda-feira, 23 de janeiro de 2012 00:23
  • Fala Tiago, 

    Cara eu até tinha visto esse posto do Cris Webb mas eu ainda não havia testado. Uma duvida que eu tenho é esse tipo de estratégia funcionaria para queries mdx que recebem parametro de entrada? No caso o Dataset "Estado" irá receber o valor do Dataset "Regiao" como parametro para filtrar os dados?

     

    Um dos dashboards visa a integração com Mapas. Gostei muito do seu artigo. No meu caso eu estou utilizando um dataset para cadas "tipo" e camadas no componente de mapa para que caso o usuário escolha a perspectiva desejava a camada será exibida mas as outras ficam ocultas. so para entender porque você utilizou apenas um dataset?

     

    Valeu mais uma vez pelas dicas.

    segunda-feira, 23 de janeiro de 2012 00:32
  • Arthur, essa estrategia é justamenta para melhorar a performance nos parametros de entrada, ou seja, irá sim funcionar para sua solução.

    Para voce entender, o que fiz é justamente o contrario do trabalho que voce terá que ficar validando em qual camada está e que nivel voce deve mostrar é muito grande. A facilidade que eu criei com um dataset é muito grande, pois eu não preciso saber em qual nivel o usuario quer ver a informação, assim basta apenas plotar os dados em cima do meu mapa :D

    []'s

     

    segunda-feira, 23 de janeiro de 2012 16:20