Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

IFS a DAX

Hola a todos

Tengo estos datos:

ACT/BUDCantidad%
Bud101
actuar50,461538462
Delta-5-0,53846154
Bud31
actuar10,461538462
Delta-2-0,53846154

% es en realidad, lo que necesito calcular.

Usé la siguiente fórmula:

'02 Diarios Todos' es la mesa

% - SUMX (
'02 Diarios todos';
SI (
'02 Diarios todos'[BUD/ACT] - "ACT"; CALCULATE(SUM('02 All'[Amount] Journals); FILTRO('02 Todos los diarios';" ACT")/SUM('02 All'[Amount] Diaries); FILTRO('02 Todos los diarios';" BUD"));
IF ( '02 All Diaries'[BUD/ACT] á 'BUD';1;(CALCULATE(SUM('02 All'[Amount Diaries]); FILTRO('02 Todos los diarios';" ACT")/SUM('02 All'[Amount] Diaries); FILTRO('02 Todos los diarios';" BUD")))-1 )
)
)
Aparece el siguiente mensaje de error:
Se ha utilizado una función 'FILTER' en una expresión True/False que se utiliza como expresión de filtro de tabla. Esto no está permitido.
La lógica es que:
%BUD(Presupuesto) siempre es 1 (100%)
%ACT (real) es ACT/BUD
%DELTA es %ACT-%BUD
¿Alguien podría ayudar, por favor?
¡¡Gracias!!

  • Anonymous's avatar
    Anonymous
    6 years ago

    @Vilem

    Para varias EF, le recomiendo que utilice una función SWITCH:

    %_ = 
    VAR BUD_= 1
    VAR ACT_ = SUMX(FILTER('02 Deníky vše',[BUD/ACT]="ACT"),[Amount])/SUMX(FILTER('02 Deníky vše','02 Deníky vše'[BUD/ACT]="BUD"),[Amount])
    VAR DELTA_ = ACT_- BUD_
    
    RETURN  SWITCH([BUD/ACT], "BUD",BUD_, "ACT",ACT_,"DELTA",DELTA_)

    switch AUC BUD.JPG

    Paul Zheng
    Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

3 Replies

  • Falta el nombre de la columna en el filtro

     SUMX (
    '02 Deníky vše';
    IF (
    '02 Deníky vše'[BUD/ACT] = "ACT";CALCULATE(SUM('02 Deníky vše'[Amount]);FILTER('02 Deníky vše';'02 Deníky vše'[ACT/BUD]="ACT")/SUM('02 Deníky vše'[Amount]);FILTER('02 Deníky vše';'02 Deníky vše'[ACT/BUD]="BUD"));
     
    IF ( '02 Deníky vše'[BUD/ACT] = "BUD";1;(CALCULATE(SUM('02 Deníky vše'[Amount]);FILTER('02 Deníky vše';'02 Deníky vše'[BUD/ACT]="ACT")/SUM('02 Deníky vše'[Amount]);FILTER('02 Deníky vše';'02 Deníky vše'[BUD/ACT]="BUD")))-1 )
    )
    )

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hola amitchandak,

      gracias por la propina! Desafortunadamente, todavía obtengo la "Se ha utilizado una función 'FILTER' en una expresión True/False que se utiliza como expresión de filtro de tabla. Esto no está permitido." mensaje de error y no funcionará.

  • Anonymous's avatar
    Anonymous
    Not applicable

    @Vilem

    Para varias EF, le recomiendo que utilice una función SWITCH:

    %_ = 
    VAR BUD_= 1
    VAR ACT_ = SUMX(FILTER('02 Deníky vše',[BUD/ACT]="ACT"),[Amount])/SUMX(FILTER('02 Deníky vše','02 Deníky vše'[BUD/ACT]="BUD"),[Amount])
    VAR DELTA_ = ACT_- BUD_
    
    RETURN  SWITCH([BUD/ACT], "BUD",BUD_, "ACT",ACT_,"DELTA",DELTA_)

    switch AUC BUD.JPG

    Paul Zheng
    Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.