none
Existe alguma forma de agregar dois conjuntos de dados - MDX ou Role RRS feed

  • Pergunta

  • Gostaria de saber se existe alguma forma de unir 2 ou mais conjunto de dados distintos, por exemplo tenho uma role ou um MDX referente a dados de vendas de São Paulo no mês de Maio de 2014 e outra role ou MDX referente a vendas de Rio de Janeiro em Junho de 2014, alguém sabe alguma forma que tenha uma performance aceitável(já tentei cell set)? Abaixo segue um exemplo do MDX que estou gerando e que gera extrema lentidão, porém ele efetua corretamente qualquer agregação.

    SELECT NON EMPTY
    { [Measures].[Vendas], [Measures].[Qtde] } ON COLUMNS,
    NON EMPTY
    {
      ( [Lojas].[Lojas].[Lojas].AllMembers * [Marcas].[Marcas].[Marcas].AllMembers * [Roupas].[Roupas].[Item].AllMembers * [Calendario].[Dia].[Dia].AllMembers )
    } Dimension Properties MEMBER_CAPTION,
    MEMBER_UNIQUE_NAME ON ROWS
    FROM (
      SELECT
      {
        (
        { [Calendario].[Dia].&[02], [Calendario].[Dia].&[03], [Calendario].[Dia].&[04], [Calendario].[Dia].&[05], [Calendario].[Dia].&[06], [Calendario].[Dia].&[17], [Calendario].[Dia].&[18], [Calendario].[Dia].&[19], [Calendario].[Dia].&[20], [Calendario].[Dia].&[21], [Calendario].[Dia].&[22], [Calendario].[Dia].&[23] },
        [Calendario].[Mes].&[5],
        [Calendario].[Ano].&[2014],
        { [Estado].[Estado].[SAO PAULO], [Estado].[Estado].[RIO DE JANEIRO] })
      } ON ROWS,
      [Measures].AllMembers ON COLUMNS
      FROM (
        SELECT
        {
          (
          { [Calendario].[Data].&[2014-05-01T00:00:00] : [Calendario].[Data].&[2014-05-31T00:00:00] },
          { [Estado].[Estado].[SAO PAULO]}
          ),
          (
          { [Calendario].[Data].&[2014-06-01T00:00:00] : [Calendario].[Data].&[2014-06-30T00:00:00] },
          { [Estado].[Estado].[RIO DE JANEIRO]}
        } ON COLUMNS
        FROM CUBO_VENDAS
      )
    )


    Grato,

     
    terça-feira, 19 de agosto de 2014 21:08

Todas as Respostas

  • Denis,

    Falar em perfomance no SSAS é avaliar várias opções. É complicado saber o que está deixando a query lenta.

    Não entendi quando vc diz que está utilizando a role ou o MDX.

    De qualquer forma otimizei sua query. Veja se melhora a perfomance.

    SELECT NON EMPTY
    { [Measures].[Vendas], [Measures].[Qtde] } ON COLUMNS,
    NON EMPTY
    {
      (		[Lojas].[Lojas].[Lojas].AllMembers * 
    		[Marcas].[Marcas].[Marcas].AllMembers * 
    		[Roupas].[Roupas].[Item].AllMembers * 
    		[Calendario].[Dia].[Dia].AllMembers )
    }  ON ROWS
        FROM CUBO_VENDAS
    	WHERE
    	(
    	{	[Calendario].[Data].&[2014-05-01T00:00:00] : [Calendario].[Data].&[2014-05-31T00:00:00] },
    		{ [Estado].[Estado].[SAO PAULO], [Estado].[Estado].[RIO DE JANEIRO] }
    	)
      
    Abs.


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

    quarta-feira, 20 de agosto de 2014 20:47
  • Boa tarde Eduardo,

    Acho que não soube expor o problema, se meu problema fosse fácil dessa forma estaria ok.

    Mas o negócio é que imagina se uma pessoa só pudesse ver dados do estado de SP em Fevereiro e os dados de RJ em Março, da forma que você fez você iria liberar os dados de Março para SP e Fevereiro de RJ mesmo sendo proibido não é?!

    Você imagina uma regra dessa em uma role? Dados de dimensões sendo vinculados a informações de outras dimensão?

    Se fosse relacional seria algo próximo disso:

    (SP AND FEVEREIRO) OR (RJ AND MARÇO)

    Por isso foi efetuado, dois slices no cubo e depois uma tentativa de juntar essas informações.

    Grato,


    • Editado Denis Yuzo quinta-feira, 21 de agosto de 2014 16:11
    quinta-feira, 21 de agosto de 2014 16:10
  • Vc consegue impor estas regras na role. Vc quer algo dinâmico?

    Abs.


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

    quinta-feira, 28 de agosto de 2014 17:34