Inquiridor
Nome das colunas ordenado errado

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
- Editado Ygo Rabelo segunda-feira, 19 de dezembro de 2011 19:22
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 -
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"?
-
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]}
ON
COLUMNS, {[product].[product].members}
ON
ROWS
FROM
[adventure works]
Espero ter ajudado.
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp -
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 = 0SELECT 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?
-
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- Editado Eduardo Gomes Pereira terça-feira, 20 de dezembro de 2011 14:59
-
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