Inquiridor
Olap Parameter

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?
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 -
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
-
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.
-
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.
-
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