Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
1 year ago

SUM , FIlter, Containsstring DAX Formula

¡Hola!

Tengo esta fórmula de suma dax con los siguientes filtros

0RevActTransactions2 = CALCULAR(
SUMA('_Facts'[Amt])*-1,
FILTER(_Facts,CONTAINSSTRING(_Facts[LOOKUPLegacyTransType],"INVOICE")) &&
'_Facts'[FH_CurrentYN] = "Sí" &&
'_Facts'[FH_Type] = "28 transacciones de AS heredadas" &&
'_Facts'[GLAccountCategory] = "400 VENTAS"
)

Sin embargo, tengo que agregar otro filtro CONTAINSSTRING(_Facts[LOOKUPLegacyTransType],"CREDIT MEMO" que es el mismo campo donde se ha filtrado la "FACTURA".

Cualquier sugerencia de cómo podría hacer la fórmula. He hecho esto pero obtengo el resultado incorrecto

0RevActTransactions2 = CALCULAR(
SUMA('_Facts'[Amt])*-1,
FILTER(_Facts,CONTAINSSTRING(_Facts[LOOKUPLegacyTransType],"INVOICE" &&CONTAINSSTRING(_Facts[LOOKUPLegacyTransType],"CREDIT MEMO"))) &&
'_Facts'[FH_CurrentYN] = "Sí" &&
'_Facts'[FH_Type] = "28 transacciones de AS heredadas" &&
'_Facts'[GLAccountCategory] = "400 VENTAS"
)

3 Replies

  • @juhoneyighot Probar:

    0RevActTransactions2 = CALCULATE(
    SUMX(,
      FILTER(
        _Facts, 
        CONTAINSSTRING(_Facts[LOOKUPLegacyTransType],"INVOICE") && 
        CONTAINSSTRING(_Facts[LOOKUPLegacyTransType],"CREDIT MEMO") &&
        '_Facts'[FH_CurrentYN] = "Yes" &&
        '_Facts'[FH_Type] = "28 Legacy AS Transactions" &&
        '_Facts'[GLAccountCategory] = "400 SALES"
      ),
      '_Facts'[Amt]
    )*-1
  • Hola @juhoneyighot ,
    El problema que se produce se debe a que la función CONTAINSSTRING no combina correctamente ambas condiciones en la función FILTER. Cuando se usa && dentro de CONTAINSSTRING, no funciona como se esperaba porque CONTAINSSTRING espera que se evalúe una sola condición, no varias condiciones combinadas con operadores lógicos.

    Esta es la versión corregida de la fórmula DAX:

    RevActTransactions2 = CALCULATE(
        SUM('_Facts'[Amt]) * -1,
        FILTER(
            _Facts,
            (CONTAINSSTRING(_Facts[LOOKUPLegacyTransType], "INVOICE") || CONTAINSSTRING(_Facts[LOOKUPLegacyTransType], "CREDIT MEMO")) &&
            '_Facts'[FH_CurrentYN] = "Yes" &&
            '_Facts'[FH_Type] = "28 Legacy AS Transactions" &&
            '_Facts'[GLAccountCategory] = "400 SALES"
        )
    )