none
mdx para calcular valor médio entre os meses que estão na consulta na tabela dinamica RRS feed

  • Pergunta

  • Bom dia,

    Necessito fazer uma medida calculada chamada "Qtde Faturada médio Mês" onde aparecerá a Quantidade Faturada total, dividido pela quantidade de meses que está expandido na dimensão Hierarquia (Período). No entanto, como sou iniciante em mdx não sei como fazer e nem qual a função que possa se fazer isso. 

    Alguma sugestão ?

     

    Obrigado.

    segunda-feira, 5 de setembro de 2011 12:40

Todas as Respostas

  • Boa tarde pessoal, já consegui alguma coisa... porém, falta algo ainda, vou descrever o que foi feito e o que preciso . 1 - Criei um Named Set - [Filtro ano] [Período].[Mês].CurrentMember 2 - Criei um campo calculado sum([Filtro Ano],[Measures].[Quantidade Faturada])/12 No entanto, passei fixo o "12" que representa o total de meses de um ano. Porém, pretendo dividir pelo Numero de Meses que esta na consulta na tabela dinâmica . Por exemplo, no ano de 2011 tivemos Quantidade Faturada até o mês 9, o certo é dividir pelo 9 e não pelo 12. Qual propriedade ou função que poderei usar para buscar no meu caso o Número de meses da dimensão "Tempo" que está sendo usado na consulta da tabela dinâmica ?
    terça-feira, 6 de setembro de 2011 19:16
  • Opa Cavera,

    na visão ou no relatório essa medida calculada será exibida para cada mês? Imginei aqui que essa visão seria montada mostrando cada mês nas linhas o valor dessa medida calculada para cada um dos meses, estou certo? Se sim qual vai ser o comportamento, para cada mês você vai querer mostrar o valor da média naquele mês?!? Por exemplo, qando estiver em janeiro a divisão vai ser por um, quando tiver em fevereiro a divisão por dois, ao invés do "12" fixo que vocês está passando. É isso mesmo?! Se for você pode usar como divisor o valor inteiro daquele mes, não sei se na sua dimensão de tempo vc tem o campo mês como inteiro, se tiver jah pode usar esse campo (pegando o current member), mais ou menos como você fez para criar a named set filtro ano.

     

    Responde minhas dúvidas ai que eu tento te ajudar por aqui.

     

    Abraço,


    Nayron Araújo - Desenvolvedor BI - Setor de TI - Universidade Potiguar - UnP
    sexta-feira, 30 de setembro de 2011 15:05
  • Então,

    abaixo esta como cheguei na resolução. Acredito que dê para melhorar bastante esta resolução.

     

    CREATE DYNAMIC SET CURRENTCUBE.[Filtro Ano]
     AS [Período].[Ano].CurrentMember;
     
    CREATE DYNAMIC SET CURRENTCUBE.[Filtro Mes]
     AS [Período].[Mês].CurrentMember;  
     
    CREATE DYNAMIC SET CURRENTCUBE.[Filtro Dia]
     AS [Período].[Dia].CurrentMember;
     
     
     -- Campo inteiro criado no DW para contar a qtde de datas da dimensão Tempo
    CREATE MEMBER CURRENTCUBE.[Measures].[qtde_mes]
     AS round([Count_Mes_],0),
    FORMAT_STRING = "#;(#)",
    VISIBLE = 0;     
        
    CREATE MEMBER CURRENTCUBE.[Measures].[qtde faturada ano]
     AS sum([Filtro Mes],[Measures].[Quantidade Faturada]),
    FORMAT_STRING = "#;(#)",
    VISIBLE = 0;     
       
    CREATE MEMBER CURRENTCUBE.[Measures].[qtde_total_anual]
     AS iif([Measures].[qtde faturada ano]=0 or isempty([Measures].[qtde faturada ano]),null,
    [Measures].[qtde faturada ano])/sum([Measures].[qtde_mes]),
    FORMAT_STRING = "#;(#)",
    VISIBLE = 0;     

    CREATE MEMBER CURRENTCUBE.[Measures].[Quantidade Faturada Média (mês)]
     AS sum(([Filtro Mes],[Filtro Dia]),[Measures].[qtde_total_anual]),
    FORMAT_STRING = "#;(#)",
    VISIBLE = 0;

     

     

    sexta-feira, 30 de setembro de 2011 16:54