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

Don't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

La medida de DAX no se agrega correctamente en el objeto visual entre niveles jerárquicos

Contexto: Tengo una medida de DAX que estoy usando para calcular los cargos a nivel de cuenta. El modelo de datos tiene varias tablas, pero las que se usan son Facturas y Calendario, que tiene una relación de uno a varios en un campo de fecha. La siguiente medida se utiliza en una matriz con el sitio y la cuenta como filas, el año y el mes como columnas y la estimación de costos como valores. Nota: un sitio puede tener varias cuentas (cuentas).

La medida estima el costo evaluando el to_date más reciente de una factura en comparación con el mes evaluado para determinar la estimación. Si el último to_date es igual o posterior al final del mes evaluado, la suma de los cargos asignados (reales). Si el último to_date es posterior al primer día y antes del último día del mes evaluado, se toma la suma de los cargos asignados, se divide por el número de días "gastados" (el número de días del último to_date) y luego se multiplica por el número total de días del mes. Si no hay ningún to_date en el mes que se está evaluando, se utiliza la suma de los cargos asignados en el mismo mes del último año como estimación.

Problema: La medida no se agrega correctamente. La medida debe calcular la estimación a nivel de cuenta y luego sumarla a nivel de sitio en la matriz. Sin embargo, como se muestra en la imagen al final de la publicación, es inexacto a nivel del sitio. Parece que cuando el método de estimación difiere de una cuenta a otra debido a los datos de facturación disponibles, a nivel del sitio se utiliza una metodología de estimación para ambas cuentas, en lugar de evaluar cada cuenta de forma independiente y sumar las estimaciones de las cuentas en el sitio.

A continuación se muestra una explicación detallada de lo que está sucediendo en comparación con el comportamiento esperado. Por ejemplo, el sitio 1 tiene las cuentas A y B. En el nivel del sitio 1 en julio, muestra $ 18. Expandiendo al nivel de cuenta, la cuenta A es de $18 y la cuenta B es de $49,114. El sitio 1 debería ascender a 49.132 dólares. El problema es que la cuenta A tiene una factura que cubre hasta el 12 de julio, mientras que la cuenta B no tiene actualmente una factura que cubra ninguna parte de julio.

Del mismo modo, en junio, la última to_date de la cuenta A es en julio, por lo que la estimación es simplemente la suma de los cargos asignados. La cuenta B solo está cubierta hasta el 26 de junio, por lo que los cargos asignados se extienden hasta fin de mes, lo que sitúa la estimación en $48,768. En cuanto al total del sitio 1 en junio, es de 42.283 dólares, que es el total de los cargos asignados para las cuentas A y B, que excluye la parte estimada del 27 al 30 de junio para la cuenta B.

Estimación de costos =

VAR SelectedMonth = MONTH(MAX(Calendar[Date]))

VAR SelectedYear = YEAR(MAX(Calendar[Date]))

VAR Último Año = Año Seleccionado - 1

VAR MaxEndDateAndCharges =

RESUMIR(

Facturas

Facturas[sitio],

Facturas[cuenta],

Facturas[Fin de mes],

"MaxEndDate", IF(MAX(Facturas[to_date])>EOMONTH(fecha(SelectedYear,SelectedMonth,1),0),EOMONTH(date(SelectedYear,SelectedMonth,1),0),MAX(Facturas[to_date])),

"TotalCharges", SUM(Facturas[Allocated_Charge])

)

VAR MaxEndDate =

MAXX(

FILTRO(

MaxEndDateAndCharges,

YEAR([MaxEndDate]) = SelectedYear &&

MONTH([MaxEndDate]) = SelectedMonth

),

[MaxEndDate]

)

VAR DíasEnMes = DÍA(EOMONTH(MAX(Calendario[Fecha]), 0))

DONDE CargosTotales =

SI(

MaxEndDate=EOMONTH(date(SelectedYear,SelectedMonth,1),0),

SUMX(

FILTRO(

MaxEndDateAndCharges,

YEAR([MaxEndDate]) = SelectedYear &&

MONTH([MaxEndDate]) = SelectedMonth

),

[Cargos totales]

),

IF(AND(MaxEndDate>=date(SelectedYear,SelectedMonth,1),MaxEndDate<EOMONTH(date(SelectedYear,SelectedMonth,1),0)),

SUMX(

FILTRO(

MaxEndDateAndCharges,

YEAR([MaxEndDate]) = SelectedYear &&

MONTH([MaxEndDate]) = SelectedMonth

),

[Cargos totales]) /DAY(MaxEndDate)*DaysInMonth,

CALCULAR(suma(Facturas[Allocated_Charge]),SAMEPERIODLASTYEAR('Calendario'[Fecha]))

)

)

RETURN Cargos Totales

Screenshot 2024-07-23 171337.png

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Hola @ethan_bolick ,

El problema que tienes es muy común. La fila total es correcta para la medida, simplemente no es lo que la mayoría de la gente espera. Lo que la gente espera es que el "Total" muestre la suma de los valores de la columna. Las medidas no hacen esto. Las medidas respetan el contexto de la fila Total y se calculan dentro de ese contexto. Por lo tanto, es probable que una medida utilizada en una columna de una visualización de tabla tenga un valor inesperado en la columna Total.

He creado un ejemplo para ilustrar esto en detalle:

vlinhuizhmsft_0-1721806509875.png

Para obtener los totales correctos, utilicé la siguiente fórmula, utilizando la función ISINSCOPE se pueden realizar varios cálculos en diferentes niveles de datos dentro de la matriz.

correct = 
VAR _product = 'financials'[Measure] * [Measure 2]
VAR _total =
    SUMX ( ALLSELECTED ( financials[Product] ), [Measure] * [Measure 2] )
RETURN
    IF (
        ISINSCOPE ( financials[Product] ),
        _product,
        IF ( ISINSCOPE ( financials[Discount Band] ), _total )
    )

Aquí está el enlace como referencia: https://www.vahiddm.com/post/why-my-measure-returns-the-wrong-total.

Puede consultar mis pensamientos sobre cómo realizar cambios en su dax y, si aún hay problemas, puede proporcionarme el archivo pbix o los datos de ejemplo. Recuerde eliminar los datos confidenciales y no inicie sesión en su cuenta en Power BI Desktop al cargar el archivo pbix.

Saludos
Zhu
Equipo de apoyo a la comunidad

Si hay alguna publicación que ayude, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.
Si no entiendo sus necesidades o aún tiene problemas con él, no dude en hacérnoslo saber. ¡Muchas gracias!

Gracias por la respuesta. Estoy tratando de probar esta medida, pero no se carga. El objeto visual agota el tiempo de espera y dice que el objeto visual ha superado los recursos disponibles, incluso si filtro en un sitio.

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

Jan25PBI_Carousel

Power BI Monthly Update - January 2025

Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.

Jan NL Carousel

Fabric Community Update - January 2025

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

Top Kudoed Authors