none
Ordenar Dimensão Data pelo Mês RRS feed

  • Pergunta

  • Estou usando o Analysis Services 2005 com banco de dados SQL Server.

    Tenho uma dimensão data com a seguinte estrutura básica:

    CREATE TABLE DM_DATA(

          CD_DATA int NOT NULL,

          DT_DATA date NULL,

          NR_ANO int NULL,

          NR_MES int NULL,

          NR_DIA int NULL,

          NM_ANO_MES varchar(15) NULL,

          NM_ANO_MES_ABREV char(8) NULL,

          NR_ANO_MES int NULL,

          NM_MES varchar(9) NULL,

          NM_MES_ABREV varchar(3) NULL,

          NR_DIA_DA_SEMANA int NULL,

          NM_DIA_DA_SEMANA varchar(7) NULL,

          NR_DIA_DO_ANO int NULL,

          NR_BIMESTRE int NULL,

          NR_TRIMESTRE int NULL,

          NR_SEMESTRE int NULL,

          NR_SEMANA_MES int NULL,

          NR_SEMANA_ANO int NULL,

          NR_ANO_BIMESTRE char(7) NULL,

          NR_ANO_TRIMESTRE char(7) NULL,

          NR_ANO_SEMESTRE char(7) NULL,

          NR_DIA_UTIL int NULL,

          FL_FINAL_SEMANA int NULL,

          NM_DATA_POR_EXTENSO varchar(50) NULL

    )

    Dentro do SSAS fiz uma dimensão data onde preciso mostrar uma hierarquia com ano, mês e dia. Sendo que o mês deve ser a descrição, como por exemplo: janeiro, fevereiro, março etc..

    O problema é que a ordenação do mês não está seguindo a ordem numérica dos meses, e sim a ordem alfabética.

    Já tentei colocar a dimensão no seguinte esquema:

    Esquema

    Propriedade

    Depois de feito essa configuração a cima, mandei processar a dimensão e me apresentou o seguinte erro:

    Erros no mecanismo de armazenamento OLAP: Chave de atributo duplicada encontrada durante o processamento: Tabela: 'DM_DATA_REGISTRO', Coluna: 'NM_MES', Valor: 'abril'. O atributo é 'NM MES'.

    Porque realmente o mês se repete, porque os registros na dimensão é por dia.


    Como faço para ordenar a hierarquia (ano, descrição do mês e dia) pelo o número do mês?

    terça-feira, 14 de agosto de 2012 20:22

Todas as Respostas

  • Consegui solucionar o problema. Usei o banco de dados do Adventure Works para testar a solução e deu certo. Estou postando a resposta caso alguém passe pelo mesmo problema. Segue:


    Data. Depois, revise a propriedade OrderBy do atributo Nome do Mês na janela Propriedades.

    Nome do Mês são classificados pelos seus valores de chave.

  • Navegador, verifique se Data de Calendário está selecionado na lista Hierarquia e depois expanda os níveis da hierarquia definida pelo usuário para revisar a ordem de classificação dos meses do calendário.

    Observe que os membros da hierarquia de atributo são classificados com base nos valores ASCII das chaves de membros deles, que são mês e ano.Nesse caso, classificar pelo nome ou pela chave do atributo não classifica os meses do calendário cronologicamente.MonthNumberOfYear.Data.

  • Estrutura de Dimensão para a dimensão Data, clique com o botão direito do mouse em MonthNumberOfYear no painel Exibição da Fonte de Dados e depois clique em Novo Atributo da Coluna.

  • Atributos, selecione Número do Mês do Ano e depois defina a propriedade AttributeHierarchyEnabled como False na janela Propriedades, a propriedade AttributeHierarchyOptimizedState como NotOptimized e a propriedade AttributeHierarchyOrdered como False.

    Essas configurações ocultarão o atributo dos usuários e melhorarão o tempo de processamento.Esse atributo não será usado para navegação.Ele será usado apenas para classificar os membros de outro atributo.

    ObservaçãoObservação

    Classificar as propriedades alfabeticamente na janela Propriedades simplificará esta tarefa, pois as três propriedades serão classificadas subjacentes umas às outras.

  • Relações de Atributo.

    Data estão relacionados diretamente ao atributo Data, que é uma chave de membro que relaciona os membros da dimensão aos fatos nos grupos de medidas relacionados.Nome do Mês o Número do Mês do Ano.

  • Nome do Mês e depois selecione Nova Relação de Atributo.

  • Criar Relação de Atributo, o Atributo de Origem é Nome do Mês.Atributo Relacionado como Número do Mês do Ano.

  • Tipo de relação, defina o tipo de relação como Rígida.

    Nome do Mês e Número do Mês do Ano não mudarão com o passar do tempo.Como resultado, o Analysis Services não descartará agregações para essa relação durante o processamento incremental.Se ocorrer uma mudança, um erro de processamento ocorrerá durante o processamento incremental e será necessário fazer um processamento completo da dimensão.Nome do Mês.

  •     Click OK. 

  • Estrutura da Dimensão.

  • Nome do Mês no painel Atributos e depois altere o valor da propriedade OrderBy para AttributeKey na janela Propriedades e o valor da propriedade OrderByAttribute para Número do Mês do Ano.

  • Compilar, clique em Implantar Tutorial do Analysis Services.

  • Navegador da dimensão Data, clique em Reconectar e depois navegue pelas hierarquias de usuário Data de Caledário e Data Fiscal para verificar se os meses agora estão classificados cronologicamente.

quarta-feira, 15 de agosto de 2012 17:31
  • Bom dia para realizar esta ordenação basta criar um AtributeKEY pedir para o campo que quer ordenar, usar ele como referência.

    Voce pega o campo mês antes de lançar ele na hierarquia , arrasta dentro do campo mês a chave que ele deve seguir (NR_MES) irá aparecer o AtributeKey logo abaixo do campo, clique nele e deixe ele com a propriedade Visible: FALSE.

    Depois Clica no Mês (nome) e na Propriedade OrderBY: AtributeKey e logo abaixo marcar OrderByAttribute: selecionar o NR_MES que estará disponível para seleção.

    Pronto agora é só mover o Mês para dentro da Hierarquia e o campo vai seguir a ordenação "forçada" pela chave e não pela ordem alfabética.

    Segue um exemplo de como fica a visualização.


    Diogo A. Di Pietro [Business Intelligence Analyst|Data Base Administrator | Data Warehouse Administrator | Jedi Master | GM of Wow]

    sexta-feira, 31 de agosto de 2012 14:26