Filtrar en DAX con múltiples criterios

Un usuario Pregunto ✅

Susansw

La primera vez que uso DAX y estoy tratando de escribir algunas consultas muy básicas y necesito filtrar datos en función de dos criterios. Solo necesito los datos del cubo SalesFacts donde el flujo de ingresos es PRD O SUP. No importa cómo cambie esto, obtengo uno de dos errores. Aparece en la versión que estoy usando, solo puede tener dos criterios en el código. No encuentro ninguna respuesta en la web, habiendo probado todas las opciones disponibles. Cualquier idea sería genial.

EVALUAR (FILTRO (SUMMARIZE (‘SalesFacts’, ‘PeriodDate'[USDate] , ‘Vendedor'[Sales Team]

, «Nombre del vendedor», IF (‘Vendedor'[Sales Group] = «Distribuidor», ‘Pedido'[Salesperson], «»), «Ingresos indirectos», If (‘Vendedor'[Sales Group] = «Distribuidor», Sum (‘SalesFacts'[Line Value]), 0)), ‘SalesFacts’, ‘RevenueStream'[Revenue Stream Code]= «PRD» && ‘RevenueStream'[Revenue Stream Code]= «SUP»)) ORDEN POR ‘PeriodDate'[USDATE]

Errores:

Se pasaron demasiados argumentos a la función de filtro cuando uso el código anterior. Cuando elimino la referencia a ‘SalesFacts’, en el código de filtro, obtengo: El valor para el vendedor de la columna no se puede determinar en el contexto actual: Verifique que todas las columnas a las que se hace referencia existan …….

@susansw

Hola,

Estas sugerencias a continuación le ayudarían. Por favor échale un vistazo.

  1. ¿Dónde probaste esta fórmula? Si se usó en Power BI Desktop, EVALUAR no es necesario.
  2. Hasta donde yo sé, no ORDER BY en Power BI Desktop.
  3. DAX es un lenguaje funcional. FILTER solo tiene dos parámetros como este: FILTER (
    , ).
  4. evaluar cada fila en
  5. . Tu no tiene nada con el

    (el resumen suministrado).
  6. Tal vez su fórmula se vea así:
  7. evaluate
    SUMMARIZE (
        CALCULATETABLE (
            VALUES ( 'SalesFacts' ),
            'RevenueStream'[Revenue Stream Code] = "PRD",
            'RevenueStream'[Revenue Stream Code] = "SUP"
        ),
        'PeriodDate'[USDate],
        'Salesperson'[Sales Team],
        "Salesperson Name", sum(IF ( 'Salesperson'[Sales Group] = "Dealer", 'Order'[Salesperson], "" )),
        "InDirect Revenue", sum(IF (
            'Salesperson'[Sales Group] = "Dealer",
            SUM ( 'SalesFacts'[Line Value] ),
            0
        )))

    Referencia: https://msdn.microsoft.com/en-us/library/ee634396.aspx

    https://msdn.microsoft.com/en-us/library/ee634966.aspx

    ¡Atentamente!

    Valle

    GilbertQ

    Hola, ¿estás intentando crear una medida o una columna?

    Cuando desee utilizar varios criterios, puede utilizar el || que significa «O» al crear medidas.

    Entonces puedes hacer el siguiente ejemplo:

    Total Sales = CALCULATE(sum('Table1'[Sales]),'Table1'[Revenue Stream] = "PRD" || 'Table1'[Revenue Stream] = "SUP")

    Susansw

    Esta es mi primera vez con DAX y estoy usando el siguiente código para filtrar datos.

    EVALUAR (

    FILTRO (

    SUMMARIZE (‘SalesFacts’, ‘PeriodDate'[USDate] , ‘Vendedor'[Sales Team]

    , «Nombre del vendedor», IF (‘Vendedor'[Sales Group] = «Distribuidor», ‘Pedido'[Salesperson], «»), «Ingresos indirectos», If (‘Vendedor'[Sales Group] = «Distribuidor», Sum (‘SalesFacts'[Line Value]), 0)

    ), ‘SalesFacts’, ‘RevenueStream'[Revenue Stream Code]= «PRD» && ‘RevenueStream'[Revenue Stream Code]= «SUP»

    )

    )

    ORDEN POR ‘PeriodDate'[USDATE]

    Si tengo un nombre de tabla en el filtro, como arriba de ‘SalesFacts’ o incluso ‘SalesPerson’, aparece un error: se pasaron demasiados argumentos a la función de filtro.

    Si elimino el nombre de la tabla en el filtro, aparece un error: el valor de la columna Grupo de ventas en la tabla vendedores no se puede determinar en el contexto actual. Compruebe que existan todas las columnas a las que se hace referencia en la expresión de cálculo …

    Gracias

    No importa lo que haga con el filtro, aparece uno de dos errores.

    Si

    Deja un comentario

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *