none
Métrica Calculada Clientes para Produto RRS feed

  • Discussão Geral

  • Olá,

    Quero criar uma métrica chamada Total Effect para fazer um relatório e estou com muitas dificuldades.

    Estou fazendo as seguintes métricas qua avaliam a mudança no faturamento (sempre falando de dados YTD):
    Price Effect  = (Avg Price YTD 2009 - Avg Price YTD 2008) * Sales Quantity YTD 2009
    Quantity Effect = (Sales Quantity YTD 2009 - Sales Quantity YTD 2008) * Avg Price YTD 2008
    Mix Effect = Esse é dificil. Corresponde ao valor da mudança de % de participação em quantidade * Avg Price YTD 2008

    Elas só são válidas como cálculo para o nivel MES - CLIENTE - PRODUTO mas o relatório final vai ser MES - CLIENTE ou MES - PRODUTO.

    Eu consegui fazer no AS as métricas funcionarem para um relatório MES - CLIENTE - PRODUTO, mas quando mudo para MES - CLIENTE ou MES - PRODUTO, as métricas tem valor incorreto.

    o Average Price por exemplo muda quando totalizado, então todas as contas apresentam problemas pois todas elas deveriam ser feitas com o Average Price de um MES CLIENTE PRODUTO

    Já estou trabalhando nisso a quase um mes, já li livro novo de MDX e ainda nada.

    Será que alguém já passou por situação parecida?
    Toda ajuda é bem vinda.

    Vejam um exemplo para Quantity Effect em Local Currency (LC) que funciona na granularidade MES - PRODUTO - CLIENTE:

     

    CREATE MEMBER CURRENTCUBE.[Measures].[Sales YTD Quantity Effect LC Calc]
    
    
    
    AS 
    
    
    
    Case When IsEmpty ([Measures].[Sales YTD Average Price LC PY Year])
    
    
    
    then ([Measures].[Sales YTD Quantity]-[Measures].[Sales YTD Quantity PY Year]) * [Measures].[Sales YTD Average Price LC]
    
    
    
    else
    
    
    
    ([Measures].[Sales YTD Quantity]-[Measures].[Sales YTD Quantity PY Year]) * [Measures].[Sales YTD Average Price LC PY Year]
    
    
    
    end, 
    
    
    
    FORMAT_STRING = "#,#", 
    
    
    
    VISIBLE = 0 , DISPLAY_FOLDER = 'PRICE\YTD\LC' , ASSOCIATED_MEASURE_GROUP = 'FACT SALES DETAIL'; 
    
    
    
    CREATE MEMBER CURRENTCUBE.[Measures].[Sales YTD Quantity Effect LC]
    
    
    
    AS 
    
    
    
    IIF (StrToSet("Axis(1)").Item(0).Item(0).Dimension.CurrentMember.Level.Ordinal=0,
    
    
    
    SUM( StrToSet("Axis(1)").Item(0).Item(0).Dimension.CurrentMember.children , 
    
    
    
    [Measures].[Sales YTD Quantity Effect LC Calc]),
    
    
    
    [Measures].[Sales YTD Quantity Effect LC Calc]),
    
    
    
    FORMAT_STRING = "#,#", 
    
    
    
    VISIBLE = 1 , DISPLAY_FOLDER = 'PRICE\YTD\LC' , ASSOCIATED_MEASURE_GROUP = 'FACT SALES DETAIL'; 

     

    A primeira métrica faz a conta (Sales Quantity YTD 2009 - Sales Quantity YTD 2008) * Avg Price YTD 2008 (se não ouve venda em 2008 usa preço de 2009).
    A segunda métrica, faz com que dado um set de dados, o AS faz o calculo para dados em ultimo nivel, mas caso estejam usando dados agregados faz a somatória dos dados em ultimo nivel.
    Portanto essa segunda métrica teria de ser alterada para ter escopo sempre em MES - CLIENTE - PRODUTO. Ou seja ao invés de um children só, eu preciso produto.ultimo nivel, cliente.ultimo nivel

    Agora estou fazendo testes para obter o resultado válido para MES - PRODUTO, para isso inclui um *Customer.children, mas agora demora muito e a query não responde, imagino que esteja faltando algum tipo de limitação NON EMPTY ou algo assim, o cubo deve estar fazendo a conta para todos os 36220 clientes e cruzando com todos os 6370 produtos.

    CREATE MEMBER CURRENTCUBE.[Measures].[Sales YTD Quantity Effect LC]
    AS IIF (StrToSet("Axis(1)").Item(0).Item(0).Dimension.CurrentMember.Level.Ordinal=0,
    SUM( StrToSet("Axis(1)").Item(0).Item(0).Dimension.CurrentMember.children 
    ----AQUI Ó
    * [DIM CUSTOMER].[CUSTOMER NAME].[All].CHILDREN,
    [Measures].[Sales YTD Quantity Effect LC Calc]),
    [Measures].[Sales YTD Quantity Effect LC Calc]),
    FORMAT_STRING = "#,#", 
    VISIBLE = 1 , DISPLAY_FOLDER = 'PRICE\YTD\LC' , ASSOCIATED_MEASURE_GROUP = 'FACT SALES DETAIL'; 

     

     


    Será que estou indo no caminho certo?

     


    Será que estou indo no caminho certo?

    • Editado Miguel Salles quinta-feira, 27 de agosto de 2009 18:18 Complementação
    quinta-feira, 27 de agosto de 2009 14:56