none
Nome das colunas ordenado errado RRS feed

  • Pergunta

  •  

     

     

    Pessoal.

     

    Estou constuindo um dashbord com o performance point, e os relatórios que tem origem um cubo no Analysis server, sempre estão ordem das colunas errados.

    como segue o exemplo abaixo, onde o nome da coluna seria o mês.

     

    1 10 11 12 2 3 4 5 6 7 8 9
    Arrendamento                        
    Filial 1 24 43 57 56 31 51 59 29 44 135 58 147
    Filial 2 25 40 20 40 26 35 28 31 36 27 41 52
    Filial 3 20 34 16 10 20 12 13 25 16 9 23 22
    Filial 4 9 14 15 43 17 33 15 14 18 14 35 15
    Filial 5 13 12 7 10 2 5 5 5 5 11 14  

     

    Estou construindo o relatório arrastando as dimensões para o tabela, e ele gera o MDX com o mes fora de ordem.

    Já alterei o MDX, mas mesmo assim o mes sempre fica fora de ordem.

     

    Tentativas::

     

     

     

    A consulta MDX são geradas automaticamente e gerou::::

     

    WITH

    MEMBER [DM_Apoio_Tempo].[NR Ano].[ Aggregation] AS 'AGGREGATE( { [DM_Apoio_Tempo].[NR Ano].[NR Ano].ALLMEMBERS } )', SOLVE_ORDER = 0

     

    SELECT

    NON EMPTY HIERARCHIZE( { [DM_Apoio_Tempo].[NR Mes].&[1], [DM_Apoio_Tempo].[NR Mes].&[10], [DM_Apoio_Tempo].[NR Mes].&[11], [DM_Apoio_Tempo].[NR Mes].&[12], [DM_Apoio_Tempo].[NR Mes].&[2], [DM_Apoio_Tempo].[NR Mes].&[3], [DM_Apoio_Tempo].[NR Mes].&[4], [DM_Apoio_Tempo].[NR Mes].&[5], [DM_Apoio_Tempo].[NR Mes].&[6], [DM_Apoio_Tempo].[NR Mes].&[7], [DM_Apoio_Tempo].[NR Mes].&[8], [DM_Apoio_Tempo].[NR Mes].&[9] } )

    ON COLUMNS,

     

    NON EMPTY { ORDER( HIERARCHIZE( { [DM_Protocolo_Processo].[CD Processo].&[7], [DM_Protocolo_Processo].[CD Processo].&[6], [DM_Protocolo_Processo].[CD Processo].&[9], [DM_Protocolo_Processo].[CD Processo].&[14], [DM_Protocolo_Processo].[CD Processo].&[2], [DM_Protocolo_Processo].[CD Processo].&[1], [DM_Protocolo_Processo].[CD Processo].&[8], [DM_Protocolo_Processo].[CD Processo].&[10] } ) * HIERARCHIZE( { [DM_Apoio_Filial].[ID Filial].&[3], [DM_Apoio_Filial].[ID Filial].&[25], [DM_Apoio_Filial].[ID Filial].&[8], [DM_Apoio_Filial].[ID Filial].&[16], [DM_Apoio_Filial].[ID Filial].&[7], [DM_Apoio_Filial].[ID Filial].&[10], [DM_Apoio_Filial].[ID Filial].&[20], [DM_Apoio_Filial].[ID Filial].&[6], [DM_Apoio_Filial].[ID Filial].&[22], [DM_Apoio_Filial].[ID Filial].&[23], [DM_Apoio_Filial].[ID Filial].&[12], [DM_Apoio_Filial].[ID Filial].&[5], [DM_Apoio_Filial].[ID Filial].&[15], [DM_Apoio_Filial].[ID Filial].&[4], [DM_Apoio_Filial].[ID Filial].&[21], [DM_Apoio_Filial].[ID Filial].&[13], [DM_Apoio_Filial].[ID Filial].&[9], [DM_Apoio_Filial].[ID Filial].&[14], [DM_Apoio_Filial].[ID Filial].&[19], [DM_Apoio_Filial].[ID Filial].&[24], [DM_Apoio_Filial].[ID Filial].&[1], [DM_Apoio_Filial].[ID Filial].&[11], [DM_Apoio_Filial].[ID Filial].&[18], [DM_Apoio_Filial].[ID Filial].&[2], [DM_Apoio_Filial].[ID Filial].&[17] } ), ( [DM_Apoio_Tempo].[NR Mes].&[10] ), DESC ) }

    ON ROWS

     

    FROM [Protocolo]

     

    WHERE ( [Measures].[QTProcessoProcesso], [DM_Apoio_Tempo].[NR Ano].[ Aggregation], [DM_Protocolo_TipoOcorrencia].[CD Tipo Ocorrencia].DEFAULTMEMBER )

     

    CELL PROPERTIES VALUE, FORMATTED_VALUE, CELL_ORDINAL, FONT_FLAGS, FORE_COLOR, BACK_COLOR

     

     

    Tentei fazer, mas da erro e não retorna::

     

    WITH

    MEMBER [DM_Apoio_Tempo].[NR Ano].[ Aggregation] AS 'AGGREGATE( { [DM_Apoio_Tempo].[NR Ano].[NR Ano].ALLMEMBERS } )', SOLVE_ORDER = 0

    SELECT

    NON EMPTY HIERARCHIZE( { (Order(([DM_Apoio_Tempo].[NR Mes].&[1], [DM_Apoio_Tempo].[NR Mes].&[2], [DM_Apoio_Tempo].[NR Mes].&[3], 

    [DM_Apoio_Tempo].[NR Mes].&[4], [DM_Apoio_Tempo].[NR Mes].&[5], [DM_Apoio_Tempo].[NR Mes].&[6], [DM_Apoio_Tempo].[NR Mes].&[7], [DM_Apoio_Tempo].[NR Mes].&[8], 

    [DM_Apoio_Tempo].[NR Mes].&[9], [DM_Apoio_Tempo].[NR Mes].&[10], [DM_Apoio_Tempo].[NR Mes].&[11], [DM_Apoio_Tempo].[NR Mes].&[10], [DM_Apoio_Tempo].[NR Mes].&[12] ,

    ASC))} )ON COLUMNS,

    NON EMPTY HIERARCHIZE( { [DM_Protocolo_Processo].[CD Processo].&[7], [DM_Protocolo_Processo].[CD Processo].&[6], [DM_Protocolo_Processo].[CD 

    Processo].&[9], [DM_Protocolo_Processo].[CD Processo].&[14], [DM_Protocolo_Processo].[CD Processo].&[2], [DM_Protocolo_Processo].[CD 

    Processo].&[1], [DM_Protocolo_Processo].[CD Processo].&[8], [DM_Protocolo_Processo].[CD Processo].&[10] } ) * HIERARCHIZE( { 

    [DM_Apoio_Filial].[ID Filial].&[3], [DM_Apoio_Filial].[ID Filial].&[25], [DM_Apoio_Filial].[ID 

    Filial].&[8], [DM_Apoio_Filial].[ID Filial].&[16], [DM_Apoio_Filial].[ID Filial].&[7], 

    [DM_Apoio_Filial].[ID Filial].&[10], [DM_Apoio_Filial].[ID Filial].&[20], [DM_Apoio_Filial].[ID 

    Filial].&[6], [DM_Apoio_Filial].[ID Filial].&[22], [DM_Apoio_Filial].[ID Filial].&[23], 

    [DM_Apoio_Filial].[ID Filial].&[12], [DM_Apoio_Filial].[ID Filial].&[5], [DM_Apoio_Filial].[ID 

    Filial].&[15], [DM_Apoio_Filial].[ID Filial].&[4], [DM_Apoio_Filial].[ID Filial].&[21], 

    [DM_Apoio_Filial].[ID Filial].&[13], [DM_Apoio_Filial].[ID Filial].&[9], [DM_Apoio_Filial].[ID 

    Filial].&[14], [DM_Apoio_Filial].[ID Filial].&[19], [DM_Apoio_Filial].[ID Filial].&[24], 

    [DM_Apoio_Filial].[ID Filial].&[1], [DM_Apoio_Filial].[ID Filial].&[11], [DM_Apoio_Filial].[ID 

    Filial].&[18], [DM_Apoio_Filial].[ID Filial].&[2], [DM_Apoio_Filial].[ID Filial].&[17] } )

    ON ROWS

    FROM [Protocolo]

    WHERE ( [Measures].[QTProcessoProcesso], [DM_Apoio_Tempo].[NR Ano].[ Aggregation], [DM_Protocolo_TipoOcorrencia].[CD Tipo Ocorrencia].DEFAULTMEMBER )

    CELL PROPERTIES VALUE, FORMATTED_VALUE, CELL_ORDINAL, FONT_FLAGS, FORE_COLOR, BACK_COLOR

     

     

    Tentei fazer assim tambem (ordenando as colunas como gostaria que apresentasse), mas não adianta, parece que não alterei nada e o resultado continua fora da ordem.

     

    WITH

    MEMBER [DM_Apoio_Tempo].[NR Ano].[ Aggregation] AS 'AGGREGATE( { [DM_Apoio_Tempo].[NR Ano].[NR Ano].ALLMEMBERS } )', SOLVE_ORDER = 0

     

    SELECT

    NON EMPTY HIERARCHIZE( { [DM_Apoio_Tempo].[NR Mes].&[1], [DM_Apoio_Tempo].[NR Mes].&[2], [DM_Apoio_Tempo].[NR Mes].&[3], [DM_Apoio_Tempo].[NR Mes].&[4], [DM_Apoio_Tempo].[NR Mes].&[5], [DM_Apoio_Tempo].[NR Mes].&[6], [DM_Apoio_Tempo].[NR Mes].&[7], [DM_Apoio_Tempo].[NR Mes].&[8], [DM_Apoio_Tempo].[NR Mes].&[9], [DM_Apoio_Tempo].[NR Mes].&[10], [DM_Apoio_Tempo].[NR Mes].&[11], [DM_Apoio_Tempo].[NR Mes].&[12] } )

    ON COLUMNS,

     

    NON EMPTY { ORDER( HIERARCHIZE( { [DM_Protocolo_Processo].[CD Processo].&[7], [DM_Protocolo_Processo].[CD Processo].&[6], [DM_Protocolo_Processo].[CD Processo].&[9], [DM_Protocolo_Processo].[CD Processo].&[14], [DM_Protocolo_Processo].[CD Processo].&[2], [DM_Protocolo_Processo].[CD Processo].&[1], [DM_Protocolo_Processo].[CD Processo].&[8], [DM_Protocolo_Processo].[CD Processo].&[10] } ) * HIERARCHIZE( { [DM_Apoio_Filial].[ID Filial].&[3], [DM_Apoio_Filial].[ID Filial].&[25], [DM_Apoio_Filial].[ID Filial].&[8], [DM_Apoio_Filial].[ID Filial].&[16], [DM_Apoio_Filial].[ID Filial].&[7], [DM_Apoio_Filial].[ID Filial].&[10], [DM_Apoio_Filial].[ID Filial].&[20], [DM_Apoio_Filial].[ID Filial].&[6], [DM_Apoio_Filial].[ID Filial].&[22], [DM_Apoio_Filial].[ID Filial].&[23], [DM_Apoio_Filial].[ID Filial].&[12], [DM_Apoio_Filial].[ID Filial].&[5], [DM_Apoio_Filial].[ID Filial].&[15], [DM_Apoio_Filial].[ID Filial].&[4], [DM_Apoio_Filial].[ID Filial].&[21], [DM_Apoio_Filial].[ID Filial].&[13], [DM_Apoio_Filial].[ID Filial].&[9], [DM_Apoio_Filial].[ID Filial].&[14], [DM_Apoio_Filial].[ID Filial].&[19], [DM_Apoio_Filial].[ID Filial].&[24], [DM_Apoio_Filial].[ID Filial].&[1], [DM_Apoio_Filial].[ID Filial].&[11], [DM_Apoio_Filial].[ID Filial].&[18], [DM_Apoio_Filial].[ID Filial].&[2], [DM_Apoio_Filial].[ID Filial].&[17] } ), ( [DM_Apoio_Tempo].[NR Mes].&[10] ), DESC ) }

    ON ROWS

     

    FROM [Protocolo]

     

    WHERE ( [Measures].[QTProcessoProcesso], [DM_Apoio_Tempo].[NR Ano].[ Aggregation], [DM_Protocolo_TipoOcorrencia].[CD Tipo Ocorrencia].DEFAULTMEMBER )

     

    CELL PROPERTIES VALUE, FORMATTED_VALUE, CELL_ORDINAL, FONT_FLAGS, FORE_COLOR, BACK_COLOR

     

    O que fazer??
    • Editado Ygo Rabelo segunda-feira, 19 de dezembro de 2011 19:22
    segunda-feira, 19 de dezembro de 2011 19:21

Todas as Respostas

  • Ygo, boa tarde,

    Este membro: [DM_Protocolo_Processo].[CD Processo].ALL eh um membro do tipo texto? Se sim estah ai o problema. O SSAS interpreta uma sequencia logica de um campo texto exatamente da forma que estah aparecendo pra vc, ou seja, numa sequencia de 1 a 10... o numero 10 vem primeiro que o numero 2.

    Tente mudar o membro para o tipo numerico.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    segunda-feira, 19 de dezembro de 2011 19:42
  • oi Edurado obrigaod por responder,

     

    Mas onde preciso "mexer" é nas colunas, onde vc informou são as linhas.

    teria que mexer aqui:

    NON EMPTY HIERARCHIZE( { [DM_Apoio_Tempo].[NR Mes].&[1], [DM_Apoio_Tempo].[NR Mes].&[10], [DM_Apoio_Tempo].[NR Mes].&[11], [DM_Apoio_Tempo].[NR Mes].&[12], [DM_Apoio_Tempo].[NR Mes].&[2], [DM_Apoio_Tempo].[NR Mes].&[3], [DM_Apoio_Tempo].[NR Mes].&[4], [DM_Apoio_Tempo].[NR Mes].&[5], [DM_Apoio_Tempo].[NR Mes].&[6], [DM_Apoio_Tempo].[NR Mes].&[7], [DM_Apoio_Tempo].[NR Mes].&[8], [DM_Apoio_Tempo].[NR Mes].&[9] } )

    ON COLUMNS,

     

    Mesmo assim vc acha que o membro: [DM_Protocolo_Processo].[CD Processo].ALL deve ser numerico?

     

    Se sim, na consulta teria como fazer um "cast"?

    segunda-feira, 19 de dezembro de 2011 19:46
  • Ygo, boa noite,

    Desculpe por ter confundido os membros, mas acredito que a solução se replica ao membro  [DM_Apoio_Tempo].[NR Mes].All. Este deve ser numérico, pois na verdade o que vc está mostrando na saída da query são resultados calculados e não campos estruturados com no SQL entende? O conceito em MDX muda! Agora vc está manipulando dados agregados que viraram objetos dentro do SSAS.

    Tente transformar os dois campos para um resultado numérico que acredito que vai funcionar.

    Quanto ao cast vc pode utilizar o strToValue.

    Segue o exemplo:

    WITH member [measures].[weight] AS  'StrToValue([product].[product].CurrentMember.Properties("weight"))  '  SELECT {[measures].[weight]} ONCOLUMNS,  {[product].[product].members} ON ROWS  FROM [adventure works]

    Espero ter ajudado.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    segunda-feira, 19 de dezembro de 2011 22:55
  • Eduardo, obrigado consegui agora ordernar os meses, ficou assim (coloquei o StrToSet, e escrevi na ordem que desejo):

    WITH
    MEMBER [DM_Apoio_Tempo].[NR Ano].[ Aggregation] AS 'AGGREGATE( { [DM_Apoio_Tempo].[NR Ano].[NR Ano].ALLMEMBERS } )', SOLVE_ORDER = 0

    SELECT StrToSet
    ( '{ [DM_Apoio_Tempo].[NR Mes].&[1], [DM_Apoio_Tempo].[NR Mes].&[10], [DM_Apoio_Tempo].[NR Mes].&[11], [DM_Apoio_Tempo].[NR Mes].&[12], [DM_Apoio_Tempo].[NR Mes].&[2], [DM_Apoio_Tempo].[NR Mes].&[3], [DM_Apoio_Tempo].[NR Mes].&[4], [DM_Apoio_Tempo].[NR Mes].&[5], [DM_Apoio_Tempo].[NR Mes].&[6], [DM_Apoio_Tempo].[NR Mes].&[7], [DM_Apoio_Tempo].[NR Mes].&[8], [DM_Apoio_Tempo].[NR Mes].&[9] }',CONSTRAINED )
    ON COLUMNS,

     

    Porém gerou outro problema, quando utilizo a consulta gerada automaticamente pelo Dashboard Design, ele gera parametros que utilizo depois nos mes filtros quando irei publicar esses itens em web parts.

    Agora fazendo a consulta MDX na mão terei que fazer eu mesmo os parametros, são eles:

    Ano, filial, processo.

    Tentei fazer o parametro ano da seguinte foma: Inserir parametro: Parametro_Ano, no campo padrão coloquei "[DM_Apoio_Tempo].[NR Ano]"

    Mas diz que não pode retornar dados.

    Acho que a conexão do parametro com o valor que deseja não esta correta, teria uma ideia de como seria?

    terça-feira, 20 de dezembro de 2011 12:42
  • Ygo, boa tarde,

    Vc pode utilizar o strToSet dentro da sua clausula de ano tambem e associa-lo ao parametro de ano.

    Ex.

    WITH
     MEMBER [DM_Apoio_Tempo].[NR Ano].[ Aggregation]
     AS AGGREGATE( {
     STRTOSET(@[PARAMETRO], CONSTRAINED } ), SOLVE_ORDER = 0 
     
    E no valor parametro vc monta essa string em tempo de execuçao: [DM_Apoio_Tempo].[NR Ano]&[2011]

    Utilizo esta tecnica para filtrar meus relatorios em reporting services. Nao sei se eh a mesma coisa no Dashboard Design.

    Espero ter ajudado.

    Abs.


    Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
    terça-feira, 20 de dezembro de 2011 14:58
  • Olá Ygo,

    Uma alternativa seria mudar propriedade OrderBy do seu atributo na dimensão. Utilize a opção de Key.

    Depois disso mude a opção KeyColumn para usar a chave primaria e o NameColumn para usar o valor a ser exibido. Dessa maneira o seu MXD virá ordenado e nao terá que se preocupar.

    []'s


    Tiago Balabuch
    segunda-feira, 30 de janeiro de 2012 16:22