none
Linked Dimensions - Problema ao alterar estrutura (ou talvez: comandos xml avançados para analysis) RRS feed

  • Pergunta

  • Boa tarde pessoal!

    DESCRIÇÃO DO PROBLEMA:

    Aqui na empresa eu trabalho com uns 8 cubos diferentes, sendo que praticamente todos usam as mesmas tabelas na base para gerar suas dimensões.

    Quando eu comecei a criar os cubos, eu criava as dimensões individualmente dentro de cada projeto. Logo, sempre que um usuário pedia uma nova propriedade, eu precisava ir em cada projeto e dar um "refresh" no datasource para buscar a nova coluna e então adicionar a coluna na dimensão. 

    De uns tempos pra cá comecei a fuçar nessas linked dimensions para ver o que eu conseguia fazer (nunca estudei analysis ou fiz certificação).

    Criei um projeto/database espeficicamente para guardar essas dimensões ("projeto shared"), e o cubo seguinte ("projeto cluster") que eu fiz acessa/consome essas dimensões.

    Todo dia tenho um SSIS que faz as seguintes ações:

    - "Process Update" nas dimensões do projeto shared, para buscar qualquer alteração que tenha acontecido nas dimensões.
    - "Process Full" nas dimensões do projeto cluster, pra se atualizar com as informações do projeto shared.
    - "Process Full" na partição principal do projeto cluster (esse projeto não funciona com incremental).
    - "Process Update" nas dimensões do projeto cluster (!!!). Tenho que processar de novo as dimensões ficam bugadas por algum motivo bizarro (mas isso não vem ao caso).

    O problema é, quando eu altero a estrutura de alguma dimensão do projeto shared, o process full (ou update, ou data, ou index, ou default) dessa dimensão no projeto cluster para de funcionar. A única coisa que eu consigo fazer é dar unprocess (que não me ajuda em nada).

    Eu sou obrigado então a deletar essa dimensão no projeto cluster e adicioná-la de novo... o que envolve fazer o relacionamento no dimension-usage novamente, e processar o cubo cluster em seguida.

    DÚVIDA:

    1) Existe alguma forma desse link não "quebrar" quando eu mudo a estrutura da dimensão shared? Achei que um simples process full teria que aplicar essa mudança, mas pelo jeito não funciona assim.

    2) OU, existe alguma forma d'eu fazer essas ações por comandos xml? Sei que posso processar partições/cubos por xml, mas aqui eu estou falando de: deletar uma dimensão shared do projeto, adicionar uma dimensão shared no projeto, associar dimensão no dimension-usage. Se isso fosse possível, eu iria adicionar isso na minha rotina diária.

    sexta-feira, 16 de novembro de 2012 17:55

Respostas

  • Fiote, bom dia.

    Já passei por este mesmo problema. As "linked Dimensions" geralmente são utilizadas em dimensões que não sofrem muitas alterações. É uma boa prática implementar linked dimensions somente quando existem dimensões estáticas.

    Inclusive publiquei recentemente no meu blog uma solução que por enquanto é manual, mas estou estudando uma forma de automatizar este procedimento. A grosso modo vc precisa editar a dimensão em modo XMLA e copiar a tag DIMENSIONS. Depois disso é só substituir a tag DIMENSIONS nos demais projetos que possuem a dimensão vinculada. Esta solução ajuda quando existem muitas medidas relacionadas com esta dimensão.

    Segue o link do artigo que escrevi: http://edugp.wordpress.com/2012/10/29/linked-dimension/

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp

    • Marcado como Resposta Richard Juhasz quarta-feira, 9 de janeiro de 2013 16:07
    segunda-feira, 19 de novembro de 2012 12:08