Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
2 years ago

Suma

Querido amigo,

Tengo datos como:

CategoríaSubcategoríavalor
AA15
AA110
AA23
BB16
BB13
CC14
CC2-10
CC35

He creado measuer: result= calculate(sum(value),category="A" o "C")

=17

quiero que el valor del resultado 17 sea solo para categroy A como en formato:

CategoríaSubcategoríavalorresultado
AA1517
AA11017
AA2317
BB160
BB130
CC140
CC2-100
CC350
Total 2617

¿Cómo puedo lograr el uso de DAX?

5 Replies

  • Para lograr el resultado deseado en Power BI con DAX, puede crear una columna calculada o una medida que calcule la suma de "valor" para las categorías A y C y, a continuación, usar este resultado para crear una nueva columna para los valores de "resultado" de la tabla. Así es como puedes hacerlo paso a paso:

    1. Cree una medida para calcular la suma del "valor" para las categorías A y C:

    TotalValue = CALCULATE(SUM('YourTable'[value]), 'YourTable'[Category] IN {"A", "C"})

    En la fórmula DAX anterior, 'YourTable' debe reemplazarse con el nombre real de la tabla.

    1. Ahora, puede crear una nueva columna calculada para mostrar los valores de "resultado":

    Resultado = IF('YourTable'[Category] IN {"A", "C"}, [TotalValue], 0)

    Esta columna calculada comprueba si la categoría es "A" o "C" y, de ser así, asigna el valor de la medida TotalValue; de lo contrario, asigna 0.

    1. Agregue esta columna "Resultado" a la visualización de su tabla y mostrará los valores de "resultado" como los describió.

    Su tabla ahora se verá así:

    Resultado del valor de la subcategoría Categoría
    A A1 5 17
    A A1 10 17
    A A2 3 17
    B B1 6 0
    B B1 3 0
    C C1 4 17
    C C2 -10 17
    C C3 5 17
    Total 26 17

    Asegúrese de reemplazar 'YourTable' por el nombre real de la tabla en el modelo de datos de Power BI. Este enfoque utiliza medidas DAX y columnas calculadas para lograr el resultado deseado en la visualización de la tabla.

  • Lo intenté con su medida y columna, pero mi resultado esperado no coincide con su meauser y columna. Resultado previsto:

    CategoríaSubcategoríavalorresultado
    AA1517
    AA11017
    AA2317
    BB160
    BB130
    CC140
    CC2-100
    CC350
    Total 2617
  • Pido disculpas por el malentendido. Para lograr el resultado esperado donde la columna "resultado" muestra la suma de "valor" solo para "Categoría" A y 0 para otras categorías, puede usar la siguiente medida de DAX:

    Resultado =
    VAR CategoríaA =
    SUMX (
    FILTER ( YourTableName, YourTableName[Category] = "A" ),
    YourTableName[valor]
    )
    DEVOLUCIÓN
    IF ( YourTableName[Category] = "A", CategoryA, 0 )

    Reemplace YourTableName por el nombre de la tabla donde se almacenan los datos.

    Esta medida calcula la suma de "valor" para la "Categoría" A y la almacena en la variable CategoríaA. A continuación, utiliza una instrucción IF para comprobar si la "Categoría" de la fila actual es "A". Si es así, devuelve el valor almacenado en la CategoríaA; de lo contrario, devuelve 0.

    Con esta medida, debe obtener el resultado esperado como lo describió en su pregunta.

  • @jyaul786 ,

    Le sugiero que pruebe el código como se muestra a continuación para crear una columna calculada.

    Result = 
    VAR CategoryA =
    SUMX (
    FILTER ( 'Table', 'Table'[Category] in {"A","C"} ),
    'Table'[value]
    )
    RETURN
    IF ( [Category] = "A", CategoryA, 0 )

    El resultado es el siguiente.

    Saludos
    Rico Zhou

    Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

  • Para lograr el resultado deseado mediante DAX (expresiones de análisis de datos) en Power BI u otra herramienta similar, puede crear una columna calculada que calcule el resultado de cada fila en función de su condición. Aquí hay una guía paso a paso sobre cómo hacer esto:

    1. Abra Power BI Desktop o una herramienta similar.

    2. En el panel Campos, seleccione la tabla donde se encuentran los datos.

    3. Haga clic en "Modelado" en la barra de menú superior.

    4. Seleccione "Nueva columna" para crear una nueva columna calculada.

    5. Asigne a la nueva columna el nombre "Resultado".

    6. Use la siguiente fórmula de DAX para calcular el resultado en función de su condición:

    Resultado =
    VAR SelectedCategories = {"A", "C"}
    DEVOLUCIÓN
    SI(
    SUMMARIZE(FILTER(YourTableName, YourTableName[Category] IN SelectedCategories), YourTableName[Category]),
    CALCULATE(SUM(YourTableName[valor]))
    )

    Reemplace YourTableName por el nombre de la tabla donde se almacenan los datos.

    Esta fórmula hace lo siguiente:

    • Primero define una variable SelectedCategories que contiene las categorías que desea incluir en el cálculo ("A" y "C" en este caso).

    • A continuación, utiliza la función FILTER para filtrar la tabla para incluir sólo las filas donde la categoría está en las categorías seleccionadas.

    • A continuación, utiliza la función SUMMARIZE para crear una tabla con distintos valores de categoría basados en los datos filtrados.

    • Finalmente, calcula la suma de la columna "valor" para las categorías seleccionadas utilizando la función CALCULAR.

    1. Haga clic en la marca de verificación (√) para aceptar la fórmula.

    Ahora, su tabla debe tener una nueva columna "Resultado" que contenga los resultados calculados para cada fila en función de la condición. Puede mostrar esta columna en el objeto visual de la tabla para ver los resultados descritos en el ejemplo.

    Nota: Asegúrese de reemplazar "YourTableName" con el nombre real de la tabla en la fórmula de DAX.

    Prueba también esto:

    Veo que desea que la columna "Resultado" se calcule de manera diferente. Según el requisito actualizado, desea que la columna "Resultado" sea 17 para todas las filas de la categoría A y 0 para todas las demás filas. En este caso, debe usar una fórmula DAX diferente para la columna "Resultado". Esta es la fórmula actualizada de DAX:

    Resultado =
    SI(
    YourTableName[Category] = "A",
    CALCULATE(SUM(YourTableName[value]), FILTER(YourTableName, YourTableName[Category] = "A")),
    0
    )

    Esta fórmula hace lo siguiente:

    • Comprueba si la categoría es "A" para cada fila utilizando la instrucción IF.

    • Si la categoría es "A", calcula la suma de la columna "valor" para las filas donde la categoría es "A" utilizando la función CALCULATE con una condición FILTER.

    • Si la categoría no es "A", asigna un valor de 0 a la columna "Resultado" para esa fila.

    Ahora, su columna "Resultado" debe calcularse como 17 para las filas con categoría "A" y 0 para todas las demás filas, como ha descrito en su resultado esperado.

    Si respondí a su pregunta, marque mi publicación como solución, aprecie sus felicitaciones.