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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

Calcular la media anual

Hola chicos, espero que te vaya bien ! Quiero calcular el promedio anual, así que intento simplemente dividir DIVIDE([Costo],DISTINCTCOUNT([Año])) pero en mi conjunto de datos, no tengo el valor 0 para cada año para cada dimensión y también quiero filtrar el año con una segmentación de datos. Por lo tanto, no puedo hacer esto: DIVIDE([Costo],CALCULATE(DISTINCTCOUNT([Año]),ALL()) o DIVIDE([Costo],CALCULATE(DISTINCTCOUNT([Año]),ALLEXCEPT(Tabla, [Año]))

Así que hay algunas opciones en las que estoy pensando:

- añadir todas las filas con 0 que no existe en mi base de datos, pero es demasiado

- crear una nueva tabla con sólo AÑO, pero debido a que no hay relación entre estas 2 tablas, no puedo usar la segmentación del año

- utilizar muchos a muchos relación (CROSSFILTERED)

- ¿Qué pasa si parámetro

¿Alguien puede ayudarme por favor?

Necesito encontrar una manera de calcular el promedio anual con todos los años que el usuario elegirá en la segmentación, no sólo el año de la dimensión porque no hay 0 para todo el año. Espero que sea comprensible.

Muchas gracias

13 REPLIES 13
Syndicate_Admin
Administrator
Administrator

No @Pldoyon1,

No tengo muy claro su requisito. ¿Podría explicar más y proporcionar su resultado esperado con el ejemplo? Por ejemplo, el escenario de su última publicación, ¿cuál es el resultado final esperado? Actualicé mi archivo pbix de ejemplo, por favor compruebe si eso es lo que desea.

yingyinr_0-1615968682564.png

Saludos

Hola Yinggyinr, muchas gracias por su respuesta y esfuerzo para ayudarme. El resultado que estoy buscando en su ejemplo es el siguiente:

Con los datos de la categoría A (pero las líneas de 0 valor no existen)

2017 : 0

2018 : 700

2019 : 0

2020 : 0

El promedio anual es: 700 / 4 = 175

Así que como no hay datos en el modelo para la categoría A durante todos los años, no puede calcular correctamente. Powr Bi debe proporcionar una manera de tener en cuenta el número de años seleccionados por el usuario en la segmentación de datos. Ahora, no podemos filtrar una categoría y obtener el promedio correcto correspondiente con la fecha seleccionada en la segmentación de datos.

Espero que eso sea más claro.

Gracias

No @Pldoyon1,

Actualicé la fórmula de medida como se indica a continuación, compruebe si el resultado es correcto o no:

Medida =
_MINDATE VAR =
CALCULATE( MIN ( 'Tabla'[Fecha] ),REMOVEFILTERS('Tabla'[Categoría]))
_MAXDATE VAR =
CALCULATE( MAX( 'Tabla'[Fecha] ),REMOVEFILTERS('Tabla'[Categoría]))
devolución
DIVIDE ( SUM ( 'Table'[Cost] ), DATEDIFF ( _mindate, _maxdate, AÑO ) + 1 )

yingyinr_0-1616032358991.png

Cualquier comentario o problema, por favor no dude en avisarme.

Saludos

Hola @yingyinr, gracias por su actualización. Es muy apreciado. Unfortunatley, cuando abro el archivo, la medida no es 175, sino todavía 725. Por lo tanto, No sé si configuras algo más con tu Power Bi pero el mío (última versión en fev 2021) me da 725 ! La buena respuesta es 175. Probé lo mismo con ALL() o ALLEXCEPT() como dije en mi primer post y doesn't trabajo. Si calcula y utiliza REMOVEFILTER(Category), la lógica es que no tendrá en cuenta la categoría de filtro y esto es lo que power bi está haciendo.

Si tienes otra idea, será bienvenida.

Saludos

No @Pldoyon1,

En realidad, no hice ninguna otra configuración para estos objetos visuales. Puede comprobar el archivo adjunto para obtener los detalles.

yingyinr_0-1616493764037.png

Saludos

Hola Yingyinr, todavía tengo el mismo resultado de 725 y no 175 con su archivo. No sé cómo obtienes este resultado.

No @Pldoyon1,

Actualicé mi archivo pbix de ejemplo con los siguientes pasos:

1. Cree una dimensión de fecha (no cree la relación con la tabla de hechos)

2. Actualice la fórmula de medida como se indica a continuación:

Medida =
_MINDATE VAR =
CALCULATE( MIN ( 'Fecha'[Fecha] ))
_MAXDATE VAR =
CALCULATE( MAX( 'Fecha'[Fecha] ))
devolución
DIVIDE ( SUM ( 'Table'[Cost] ), DATEDIFF ( _mindate, _maxdate, AÑO ) + 1 )

yingyinr_0-1616574013154.png

Saludos

Hola @yingyinr, gracias por su esfuerzo. Creo que estás en el camino correcto. La única solución que veo es pasar por una tabla de fechas desconectada. Sin embargo, todavía no funciona porque si filtra la segmentación de datos de fecha, no filtrará la otra tabla con el costo. Por lo tanto, la suma de costo no será buena con las fechas seleccionadas en la segmentación. Ciertamente hay una manera de filtrar la tabla de costos con una medida dax con las fechas seleccionadas en la tabla de fechas.

Syndicate_Admin
Administrator
Administrator

Por lo tanto, soluciono mi problema creando una tabla con el número de años entre un par de período de veces que el usuario puede seleccionar en su lugar para poder personalizar el período con una segmentación de datos normal. Si alguien sabe cómo hacerlo con una cortadora normal, será apreciado.

No @Pldoyon1,

He creado un archivo pbix de ejemplo (ver archivo adjunto) para usted, por favor compruebe si eso es lo que desea.

yingyinr_0-1615888899405.png

Si el anterior no es aplicable a su escenario, proporcione algunos datos de ejemplo(excluir datos confidenciales) y su resultado esperado con el ejemplo o la captura de pantalla. Gracias.

Saludos

Hola Yingyinr, muchas gracias por su ayuda. Desafortunadamente, no funciona. Si agrega otra columna en la tabla de categorías y solo hay una categoría (digamos A) en 2018 y filtra la fecha entre 2017 y 2020, y filtra la categoría A, la fecha mínima y máxima será solo una fila de la categoría A en 2018. Por lo tanto, el promedio tendrá en cuenta sólo la fecha mínima y máxima de esta fila. El promedio tiene que tener en cuenta los datos no existentes (datos con 0 eliminados) entre las fechas de la segmentación de datos.

Syndicate_Admin
Administrator
Administrator

@Pldoyon1 Esto suena como si necesita una tabla DimDate (o al menos DimYear), así que sí, cree una nueva tabla con YEAR y relacione eso con la tabla de hechos. Preferible es una tabla DimDate: https://excelwithallison.blogspot.com/2020/04/dimdate-what-why-and-how.html

Utilice AVERAGEX( VALUES(DimDate[Year]), [Cost]) para calcular el promedio.

https://excelwithallison.blogspot.com/2020/09/what-does-average-mean.html

Hola Allison, gracias por su respuesta, pero no funciona. Agrego el DimDate como usted dijo con un vínculo con mi tabla de hechos y que no tiene en cuenta el valor 0 no existente en el cálculo promedio cuando filtro una dimensión.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

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.