Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
German_043
Frequent Visitor

Ayuda con división en DAX

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% 

German_043_0-1699291004604.png

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

German_043_1-1699291081515.png

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 

 

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

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.

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

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.

Syndicate_Admin
Administrator
Administrator

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²)]
    )
...

Syndicate_Admin
Administrator
Administrator

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? 

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.