Forum Discussion
Suma
Querido amigo,
Tengo datos como:
| Categoría | Subcategoría | valor |
| A | A1 | 5 |
| A | A1 | 10 |
| A | A2 | 3 |
| B | B1 | 6 |
| B | B1 | 3 |
| C | C1 | 4 |
| C | C2 | -10 |
| C | C3 | 5 |
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ía | Subcategoría | valor | resultado |
| A | A1 | 5 | 17 |
| A | A1 | 10 | 17 |
| A | A2 | 3 | 17 |
| B | B1 | 6 | 0 |
| B | B1 | 3 | 0 |
| C | C1 | 4 | 0 |
| C | C2 | -10 | 0 |
| C | C3 | 5 | 0 |
| Total | 26 | 17 |
¿Cómo puedo lograr el uso de DAX?
5 Replies
- Syndicate_AdminAdministrator
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:
- 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.
- 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.
- 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 17Asegú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.
- Syndicate_AdminAdministrator
Lo intenté con su medida y columna, pero mi resultado esperado no coincide con su meauser y columna. Resultado previsto:
Categoría Subcategoría valor resultado A A1 5 17 A A1 10 17 A A2 3 17 B B1 6 0 B B1 3 0 C C1 4 0 C C2 -10 0 C C3 5 0 Total 26 17 - Syndicate_AdminAdministrator
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.
- Syndicate_AdminAdministrator
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 ZhouSi esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
- Syndicate_AdminAdministrator
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:
Abra Power BI Desktop o una herramienta similar.
En el panel Campos, seleccione la tabla donde se encuentran los datos.
Haga clic en "Modelado" en la barra de menú superior.
Seleccione "Nueva columna" para crear una nueva columna calculada.
Asigne a la nueva columna el nombre "Resultado".
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.
- 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.