Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago

Target measure

Hi guys, I'm having dificult to calculate a measure by area. Any one can help me?

 

Table: "Calendario" (calendar)

Table: "DimKPI" (KPIs)

Table: "FatoIndicadores" (fact)

Table: "FatoMetaIndicadores" (target table)

Visuals:

My measures are "Dynamic Measure Base" and "Dynamic Measure" to calculate fact and "Dynamic Measure Base Goal" and "Dynamic Measure Goal" to calculate the target

 

Facts Measures:

Dynamic Measure Base = 
VAR selected_kpi =
    MAX ( DimKPI[chave_datalake] )
VAR selected_fab_kpi =
    MAX ( DimKPI[chave_fabrica_kpi] )
VAR numerador =
    CONCATENATE ( selected_fab_kpi; "_numerador" )
VAR denominador =
    CONCATENATE ( selected_fab_kpi; "_denominador" )
RETURN
    SWITCH (
        TRUE ();
        MAX ( DimKPI[Formato] ) = "Decimal"
            && selected_kpi
            IN {
            "reclamacoes_totais_ppm";
            "reclamacoes_corpos_estranhos_ppm";
            "reclamacoes_sensoriais_ppm"
        };
            DIVIDE (
                CALCULATE (
                    SUM ( FatoIndicadores[value] );
                    REMOVEFILTERS ( DimKPI );
                    FatoIndicadores[chave_fabrica_kpi] = numerador
                );
                CALCULATE (
                    SUM ( FatoIndicadores[value] );
                    REMOVEFILTERS ( DimKPI );
                    FatoIndicadores[chave_fabrica_kpi] = denominador
                )
            ) * 1000000;
        selected_kpi = "msa";
            1
                - DIVIDE (
                    CALCULATE (
                        SUM ( FatoIndicadores[value] );
                        REMOVEFILTERS ( DimKPI );
                        FatoIndicadores[chave_fabrica_kpi] = numerador
                    );
                    CALCULATE (
                        SUM ( FatoIndicadores[value] );
                        REMOVEFILTERS ( DimKPI );
                        FatoIndicadores[chave_fabrica_kpi] = denominador
                    )
                );
        MAX ( DimKPI[Formato] ) = "Decimal"
            && selected_kpi
            IN {
            "rir_indice_acidente_reportavel";
            "produtividade_mo_kg_h";
            "custo_total_producao";
            "custo_conversao";
            "vmw_custo_variavel";
            "ffoh";
            "custo_materia_prima";
            "custo_material_embalagem";
            "custo_mao_obra";
            "custo_energia";
            "custo_depreciacao";
            "custo_manutencao";
            "custo_gastos_comuns";
            "custo_outros_indiretos";
            "custo_outros_diretos";
            "cogs";
            "gastos_fixos";
            "waste_by_products_em_kgs_por_ton";
            "consumo_agua_em_m2_por_ton";
            "green_house_gas_co2_em_kg_por_ton";
            "consumo_energia_mj_por_ton";
            "rendimento_egrons"
        };
            DIVIDE (
                CALCULATE (
                    SUM ( FatoIndicadores[value] );
                    REMOVEFILTERS ( DimKPI );
                    FatoIndicadores[chave_fabrica_kpi] = numerador
                );
                CALCULATE (
                    SUM ( FatoIndicadores[value] );
                    REMOVEFILTERS ( DimKPI );
                    FatoIndicadores[chave_fabrica_kpi] = denominador
                )
            );
        MAX ( DimKPI[Formato] ) = "Porcentagem"
            && selected_kpi <> "reclamacoes_totais_ppm";
            DIVIDE (
                CALCULATE (
                    SUM ( FatoIndicadores[value] );
                    REMOVEFILTERS ( DimKPI );
                    FatoIndicadores[chave_fabrica_kpi] = numerador
                );
                CALCULATE (
                    SUM ( FatoIndicadores[value] );
                    REMOVEFILTERS ( DimKPI );
                    FatoIndicadores[chave_fabrica_kpi] = denominador
                )
            );
        selected_kpi = "volume_de_producao_atual_kg"; SUM ( FatoIndicadores[value] ) / 1000;
        SUM ( FatoIndicadores[value] )
    )
Dynamic Measure = 
var eixo_atual = max('Calendario'[EIXO]) //str
var ano_atual = max('Calendario'[Ano]) //int
var current_date = TODAY()
VAR TARGET_SELECTED_KPI = MAX('DimKPI'[chave_fabrica_kpi])
VAR chavesimples = MAX(DimKPI[chave_datalake])
VAR lastmonth = FORMAT(EDATE(current_date;-1);"yyyym")
var result =
    If(
        eixo_atual IN {"Jan"; "Fev"; "Mar"; "Abr"; "Mai"; "Jun"; "Jul"; "Ago"; "Set"; "Out"; "Nov"; "Dez"};
        [Dynamic Measure Base];
        if(
            eixo_atual = format(int(max('Calendario'[Ano]))-1; "0");
            calculate(
                [Dynamic Measure Base];
                all('Calendario');
                'Calendario'[Ano] = int(max('Calendario'[Ano]))-1
            );
            if(
                eixo_atual = format(int(max('Calendario'[Ano]))-2; "0");
                calculate(
                    [Dynamic Measure Base];
                    all('Calendario');
                    'Calendario'[Ano] = int(max('Calendario'[Ano]))-2
                );
                if(
                    eixo_atual = "Meta YTD" && chavesimples IN {"reclamacoes_corpos_estranhos_ppm"; "reclamacoes_sensorial_ppm"; "reclamacoes_totais_ppm"; "eliminacao_modos_defeito"} ; 
                        CALCULATE(
                            [Dynamic Measure Base Goal];
                            ALLSELECTED(Calendario);
                            Calendario[Eixo] = lastmonth);
                    IF( eixo_atual = "Meta YTD";
                    CALCULATE(
                         [Dynamic Measure Base Goal]
                        ;ALLSELECTED(Calendario)
                        ;'Calendario'[Date] <= current_date
                    );
                        if(
                            CONTAINSSTRING(eixo_atual; "Meta") && chavesimples IN {"reclamacoes_corpos_estranhos_ppm"; "reclamacoes_sensorial_ppm"; "reclamacoes_totais_ppm"; "eliminacao_modos_defeito"} ; 
                            CALCULATE(
                                [Dynamic Measure Base Goal];
                                ALLSELECTED(Calendario);
                                Calendario[Mes] = 12);
                            IF( CONTAINSSTRING(eixo_atual; "Meta");
                                CALCULATE(
                                [Dynamic Measure Base Goal]
                                ;ALLSELECTED(Calendario)
                            );
                                if(
                                    eixo_atual = "Real...";
                                    CALCULATE(
                                    [Dynamic Measure Base];
                                    ALLSELECTED('Calendario')
                                    );
                                    if(
                                        eixo_atual = "GAP" && 
                                        NOT(
                                            ISBLANK(
                                            CALCULATE(
                                            [Dynamic Measure Base Goal];
                                            ALLSELECTED('Calendario')
                                        )
                                    )
                                );
                                ABS(
                                    CALCULATE(
                                        [Dynamic Measure Base];
                                        ALLSELECTED('Calendario')
                                    )
                                    - 
                                    CALCULATE(
                                        [Dynamic Measure Base Goal];
                                        ALLSELECTED('Calendario')
                                    )
                                )
                            )
                        )
                    )
                )
            )
        )
    )))
    
return
if(isblank(result); 0; result)


Target Measures

Dynamic Measure Base Goal = 
VAR selected_fab_kpi =
    MAX ( DimKPI[chave_fabrica_kpi] )
VAR numerador =
    CONCATENATE ( selected_fab_kpi; "_numerador" )
VAR denominador =
    CONCATENATE ( selected_fab_kpi; "_denominador" )
VAR selected_kpi =
    MAX ( DimKPI[chave_datalake] )
RETURN
    SWITCH (
        TRUE ();
        MAX ( DimKPI[Formato] ) = "Decimal"
            && selected_kpi
            IN {
            "rir_indice_acidente_reportavel";
            "produtividade_mo_kg_h";
            "custo_total_producao";
            "custo_conversao";
            "vmw_custo_variavel";
            "ffoh";
            "custo_materia_prima";
            "custo_material_embalagem";
            "custo_mao_obra";
            "custo_energia";
            "custo_depreciacao";
            "custo_manutencao";
            "custo_gastos_comuns";
            "custo_outros_indiretos";
            "custo_outros_diretos";
            "cogs";
            "gastos_fixos";
            "waste_by_products_em_kgs_por_ton";
            "consumo_agua_em_m2_por_ton";
            "green_house_gas_co2_em_kg_por_ton";
            "consumo_energia_mj_por_ton";
            "reclamacoes_totais_ppm";
            "rendimento_egrons"
        };
            DIVIDE (
                CALCULATE (
                    SUM ( FatoMetaIndicadores[value] );
                    REMOVEFILTERS ( DimKPI );
                    FatoMetaIndicadores[chave_fabrica_kpi] = numerador
                );
                CALCULATE (
                    SUM ( FatoMetaIndicadores[value] );
                    REMOVEFILTERS ( DimKPI );
                    FatoMetaIndicadores[chave_fabrica_kpi] = denominador
                )
            );
        MAX ( DimKPI[Formato] ) = "Porcentagem";
            DIVIDE (
                CALCULATE (
                    SUM ( FatoMetaIndicadores[value] );
                    REMOVEFILTERS ( DimKPI );
                    FatoMetaIndicadores[chave_fabrica_kpi] = numerador
                );
                CALCULATE (
                    SUM ( FatoMetaIndicadores[value] );
                    REMOVEFILTERS ( DimKPI );
                    FatoMetaIndicadores[chave_fabrica_kpi] = denominador
                )
            );
        SUM ( FatoMetaIndicadores[value] )
    )
Dynamic Measure Goal = 
var eixo_atual = max('Calendario'[EIXO])
return 
If(
    eixo_atual IN {"Jan"; "Fev"; "Mar"; "Abr"; "Mai"; "Jun"; "Jul"; "Ago"; "Set"; "Out"; "Nov"; "Dez"};
    [Dynamic Measure Base Goal];BLANK())

3 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    The relationship

     

  • Anonymous's avatar
    Anonymous
    Not applicable

    You have to fix the code in "Dynamic Measure Base Goal" with "MAX(FatoMetaIndicadores[area]) = MAX(FatoIndicadores[area]);"  

                    CALCULATE (
                        SUM ( FatoMetaIndicadores[value] );
                        REMOVEFILTERS ( DimKPI );
                        MAX(FatoMetaIndicadores[area]) = MAX(FatoIndicadores[area]);
                        FatoMetaIndicadores[chave_fabrica_kpi] = numerador
                    );
                    CALCULATE (
                        SUM ( FatoMetaIndicadores[value] );
                        REMOVEFILTERS ( DimKPI );
                        MAX(FatoMetaIndicadores[area]) = MAX(FatoIndicadores[area]);
                        FatoMetaIndicadores[chave_fabrica_kpi] = denominador
                    )
                );

     

    • Anonymous's avatar
      Anonymous
      Not applicable

      I tryed this but it doesn't work