Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Buen día
Estoy intentando hacer una división en DAX para sacar el porcentaje proporcional en base a un total, pero al momento de querer hacer la operación no sale el resultado esperado
Medida 2 =
/*Variables para seleccionar el idiona*/
VAR Seleccion = SELECTEDVALUE(IDIOMAS[Idioma])
/*Variables para encontrar el ultimo registro en base a la columna de fecha */
var _lastDateDips = MAXX(FILTER(Industrial_Latam,NOT(ISBLANK(Industrial_Latam[Espacio Disponible (m²)]))),Industrial_Latam[Fecha])
/*Varibles donde se guarda el ultimo valor ecncontrado*/
var Total = SUMX(FILTER(Industrial_Latam,Industrial_Latam[Fecha]=_lastDateDips),(Industrial_Latam[Espacio Disponible (m²)]))
var Porcentaje = SUMX(Industrial_Latam,SELECTEDVALUE(Industrial_Latam[Espacio Disponible (m²)]))/Total
var Percentage_ALLSELECTED =
DIVIDE (
SELECTEDVALUE(Industrial_Latam[Espacio Disponible (m²)]),Total
)
return Percentage_ALLSELECTED
En la parte del DIVIDE es donde quiero sacar el porcentaje proporcional de cada registro, pero siempre me marca un 100%
Lo que me gustaría hacer es que divida sobre el total de "Medida" que sería 253,746, si agrego el valor manual si me da el resultado deseado
Medida 2 =
/*Variables para seleccionar el idiona*/
VAR Seleccion = SELECTEDVALUE(IDIOMAS[Idioma])
/*Variables para encontrar el ultimo registro en base a la columna de fecha */
var _lastDateDips = MAXX(FILTER(Industrial_Latam,NOT(ISBLANK(Industrial_Latam[Espacio Disponible (m²)]))),Industrial_Latam[Fecha])
/*Varibles donde se guarda el ultimo valor ecncontrado*/
var Total = SUMX(FILTER(Industrial_Latam,Industrial_Latam[Fecha]=_lastDateDips),(Industrial_Latam[Espacio Disponible (m²)]))
var Porcentaje = SUMX(Industrial_Latam,SELECTEDVALUE(Industrial_Latam[Espacio Disponible (m²)]))/Total
var Percentage_ALLSELECTED =
DIVIDE (
SELECTEDVALUE(Industrial_Latam[Espacio Disponible (m²)]),253746
)
return Percentage_ALLSELECTED
Pero me gustaría saber si puedo guardar el valor de la variable "Total" como algo fijo o que solo me tomara ese valor al momento de hacer la división
Solved! Go to Solution.
Hola @Syndicate_Admin ,
Al aplicar un cálculo DAX en una tabla o matriz, debe tener en cuenta todos los contextos.
Para cada fila, se aplica automáticamente un filtro por la columna "Ciudad", dando el valor correcto para cada ciudad.
La fila para el "Total" está ignorando ese filtro fila por fila, dando el total para cada "Ciudad".
Por esa razón, debes agregar esa lógica al denominador de tu división. Debería ser algo como esto:
Medida 2 =
/*Variables para seleccionar el idiona*/
VAR Seleccion = SELECTEDVALUE(IDIOMAS[Idioma])
/*Variables para encontrar el ultimo registro en base a la columna de fecha */
var _lastDateDips = MAXX(FILTER(Industrial_Latam,NOT(ISBLANK(Industrial_Latam[Espacio Disponible (m²)]))),Industrial_Latam[Fecha])
/*Varibles donde se guarda el ultimo valor ecncontrado*/
var Total = CALCULATE(SUMX(FILTER(Industrial_Latam,Industrial_Latam[Fecha]=_lastDateDips),(Industrial_Latam[Espacio Disponible (m²)])), ALLSELECTED ( 'TableName'[Ciudad] ))
var Percentage_ALLSELECTED =
DIVIDE (
SELECTEDVALUE(Industrial_Latam[Espacio Disponible (m²)]),Total
)
return Percentage_ALLSELECTED
He ajustado la variable "Total" incluyendo un CALCULATE y un ALLSELECTED ( 'TableName'[Ciudad] ) . Esto hará que, para cada fila, para el valor del denominador, ignore el filtro de la columna "Ciudad", devolviendo el mismo valor que el "Total" de la medida "Medida". También debe reemplazar el 'TableName' con el correcto donde tiene la columna "Ciudad".
También he eliminado el "var Porcentage" porque no se estaba usando.
Por favor, hágame saber si esto resuelve su problema.
Hola @Syndicate_Admin ,
Por favor, esta medida.
Medida 2 =
/*Variables para seleccionar el idiona*/
VAR Seleccion = SELECTEDVALUE(IDIOMAS[Idioma])
/*Variables para encontrar el ultimo registro en base a la columna de fecha */
var _lastDateDips = MAXX(FILTER(Industrial_Latam,NOT(ISBLANK(Industrial_Latam[Espacio Disponible (m²)]))),Industrial_Latam[Fecha])
/*Varibles donde se guarda el ultimo valor ecncontrado*/
var Total = SUMX(FILTER(ALL(Industrial_Latam),Industrial_Latam[Fecha]=_lastDateDips),(Industrial_Latam[Espacio Disponible (m²)]))
var Porcentaje = SUMX(Industrial_Latam,SELECTEDVALUE(Industrial_Latam[Espacio Disponible (m²)]))/Total
var Percentage_ALLSELECTED =
DIVIDE (
SELECTEDVALUE(Industrial_Latam[Espacio Disponible (m²)]),Total
)
return Percentage_ALLSELECTED
O bien, puede crear una medida total independiente.
Total measure =
var _lastDateDips = MAXX(FILTER(Industrial_Latam,NOT(ISBLANK(Industrial_Latam[Espacio Disponible (m²)]))),Industrial_Latam[Fecha])
var Total = SUMX(FILTER(ALL(Industrial_Latam),Industrial_Latam[Fecha]=_lastDateDips),(Industrial_Latam[Espacio Disponible (m²)]))
return Total
Medida 2 =
var Percentage_ALLSELECTED =
DIVIDE (
SELECTEDVALUE(Industrial_Latam[Espacio Disponible (m²)]),[Total measure]
)
return Percentage_ALLSELECTED
Si lo anterior no puede ayudarlo a obtener el resultado deseado, proporcione algunos datos de muestra en sus tablas (excluya los datos confidenciales) con formato de texto y su resultado esperado con lógica de backend y ejemplos especiales. Es mejor si puede compartir un archivo pbix simplificado. Gracias.
Saludos
Neeko Tang
Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
En la definición de VAR Total, la tabla Industrial_Latam que está filtrando no es toda la tabla. Es la parte de esa tabla dentro del contexto del filtro local. En particular, se filtra por Ciudad al igual que el numerador.
Intente usar ALLSELECTED como su última variable implica que lo haría.
...
VAR Total =
SUMX (
FILTER (
ALLSELECTED ( Industrial_Latam ),
Industrial_Latam[Fecha] = _lastDateDips
),
Industrial_Latam[Espacio Disponible (m²)]
)
...
Hola @Syndicate_Admin ,
Al aplicar un cálculo DAX en una tabla o matriz, debe tener en cuenta todos los contextos.
Para cada fila, se aplica automáticamente un filtro por la columna "Ciudad", dando el valor correcto para cada ciudad.
La fila para el "Total" está ignorando ese filtro fila por fila, dando el total para cada "Ciudad".
Por esa razón, debes agregar esa lógica al denominador de tu división. Debería ser algo como esto:
Medida 2 =
/*Variables para seleccionar el idiona*/
VAR Seleccion = SELECTEDVALUE(IDIOMAS[Idioma])
/*Variables para encontrar el ultimo registro en base a la columna de fecha */
var _lastDateDips = MAXX(FILTER(Industrial_Latam,NOT(ISBLANK(Industrial_Latam[Espacio Disponible (m²)]))),Industrial_Latam[Fecha])
/*Varibles donde se guarda el ultimo valor ecncontrado*/
var Total = CALCULATE(SUMX(FILTER(Industrial_Latam,Industrial_Latam[Fecha]=_lastDateDips),(Industrial_Latam[Espacio Disponible (m²)])), ALLSELECTED ( 'TableName'[Ciudad] ))
var Percentage_ALLSELECTED =
DIVIDE (
SELECTEDVALUE(Industrial_Latam[Espacio Disponible (m²)]),Total
)
return Percentage_ALLSELECTED
He ajustado la variable "Total" incluyendo un CALCULATE y un ALLSELECTED ( 'TableName'[Ciudad] ) . Esto hará que, para cada fila, para el valor del denominador, ignore el filtro de la columna "Ciudad", devolviendo el mismo valor que el "Total" de la medida "Medida". También debe reemplazar el 'TableName' con el correcto donde tiene la columna "Ciudad".
También he eliminado el "var Porcentage" porque no se estaba usando.
Por favor, hágame saber si esto resuelve su problema.
Me sirvio a la perfección, si me da los porcentajes esperados.
Pero cuado pongo la información en una tabla no me da suma de los porcetajes que sería el 100%, hay alguna manera de hacerlo?