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.
Tengo las dos tablas a continuación, una sales_table con las ventas diarias y otra check_dates_table que tiene una columna de fecha que es un subconjunto de las fechas que se encuentran en sales_table.
sales_table:
date_sales ventas
03/01/2024 | 10 |
03/02/2024 | 20 |
03/03/2024 | 22 |
03/04/2024 | 5 |
03/05/2024 | 7 |
03/06/2024 | 15 |
03/07/2024 | 34 |
03/08/2024 | 56 |
03/09/2024 | 2 |
03/10/2024 | 15 |
03/11/2024 | 5 |
03/12/2024 | 7 |
03/13/2024 | 25 |
03/14/2024 | 32 |
03/15/2024 | 45 |
03/16/2024 | 23 |
03/17/2024 | 2 |
03/18/2024 | 3 |
03/19/2024 | 24 |
03/20/2024 | 15 |
03/21/2024 | 7 |
check_dates_table:
date_check
03/01/2024 |
03/05/2024 |
03/06/2024 |
03/07/2024 |
03/11/2024 |
03/12/2024 |
03/14/2024 |
La relación entre ambos es la siguiente:
Para la salida final, quiero obtener una matriz con las fechas de comprobación en las filas y las ventas, el promedio de las ventas en el check_dates en los valores. Algo así en otras palabras (reproducido en excel):
He definido una medida en el sales_table que calcula el promedio de ventas:
msr_AVG = AVERAGE(sales_table[sales])
Sin embargo, cuando agrego id a los valores de la matriz, no puedo hacer que ignore el filtro de filas del "date_check".
Parece que tengo que crear de alguna manera una medida que ignore el filtro de fila, pero todo lo que intenté no funcionó. ¿Alguien puede ayudar, por favor?
Gracias @Greg_Deckler
¿Es posible hacer algo como lo siguiente?
Measure Avg =
VAR __Date = MAX( 'check_dates_table'[date_check] )
VAR __Year = YEAR( __Date )
VAR __Month = MONTH( __Date )
VAR __Table = FILTER( ALL( 'sales_table'), sales_table[date_sales] IN check_dates_table[date_check])
VAR __Result = AVERAGEX( __Table, [sales] )
RETURN
__Result
El ejemplo proporcionado es solo para fines ilustrativos y es una coincidencia que todas las fechas de verificación ocurran en un solo mes.
@PowerBeeTree Lo más probable es que esa forma no funcione. El motivo es que en el objeto visual de la tabla, tiene las filas por fecha. Por lo tanto, en tu check_dates_table IN [date_check] la única fecha allí va a ser la fecha de esa fila que no es lo que quieres. Es por eso que no puedes hacerlo de esa manera.
Gracias @Greg_Deckler
Sí, he pensado que mantenerlos allí está causando el problema, sin embargo, necesito ver la fecha "activa".
¿Alguna solución? Parece que mi problema es similar al cálculo de MTD, sin embargo, cuando agrego la medida TOTALMTD (medida visual), obtengo el promedio móvil en lugar del promedio general.
@PowerBeeTree Bien, hice una maqueta de esto y ahora entiendo mejor el problema. Aquí hay una medida revisada y se adjunta PBIX debajo de la firma:
Measure Avg =
VAR __Date = MAX( 'check_dates_table'[date_check] )
VAR __CheckDates = DISTINCT(check_dates_table[date_check])
VAR __Year = YEAR( __Date )
VAR __Month = MONTH( __Date )
VAR __Table = FILTER( ALL( 'sales_table'), YEAR( [date_sales] ) = __Year && MONTH( [date_sales] ) = __Month && [date_sales] IN __CheckDates)
VAR __Result = AVERAGEX( __Table, [sales] )
RETURN
__Result
@Greg_Deckler tal vez comuniqué mal mi desafío.
Abrí el archivo PBI (¡gracias por ello!)
en lugar de la matriz que se presenta en él, quiero tener lo siguiente en la columna "measure Avg":
@PowerBeeTree Lo malo es que es un cambio muy pequeño:
Measure Avg =
VAR __Date = MAX( 'check_dates_table'[date_check] )
VAR __CheckDates = ALL(check_dates_table[date_check])
VAR __Year = YEAR( __Date )
VAR __Month = MONTH( __Date )
VAR __Table = FILTER( ALL( 'sales_table'), YEAR( [date_sales] ) = __Year && MONTH( [date_sales] ) = __Month && [date_sales] IN __CheckDates)
VAR __Result = AVERAGEX( __Table, [sales] )
RETURN
__Result
¡Esto es genial @Greg_Deckler !
Por favor, corríjame si me equivoco, pero parece que necesito salir del contexto de filtro aplicado por " check_dates_table[date_check] ".
El uso de DISTINCT mantiene el contexto del fitler en su lugar, por lo que tengo que usar ALL para escapar de él. ¿Derecha?
¿Existe por casualidad una lista/hoja de trucos de las funciones que se mantienen en su lugar/escapan del contexto del filtro?
@PowerBeeTree Correcto, ALL escapa del contexto del filtro. ALL es la función principal para hacer esto. También está ALLSELECTED, que se supone que solo escapa de los filtros internos pero no de los filtros externos (como las rebanadoras, por ejemplo). También existe ALLEXCEPT que elimina todos los filtros excepto los especificados.
También hay funciones especiales que solo funcionan realmente con CALCULATE y CALCULATETABLE, como REMOVEFILTERS. Por lo general, no uso CALCULAR, por lo que generalmente no me importan.
Este es el vínculo a la referencia de la función DAX: Referencia de la función DAX - DAX | Microsoft Learn
Expanda la sección Filtros y encontrará todas las diferentes funciones que pueden afectar el contexto del filtro, etc.
Además, tenga en cuenta que me baso en una peculiaridad extraña de la función ALL en la que si usa la forma de columna, devuelve valores distintos.
@PowerBeeTree La primera variable toma la fecha activa. ¿Cuál es el problema con la medida? Si necesita conservar filtros externos (externos a la visualización), puede usar ALLSELECTED frente a ALL.
@PowerBeeTree Quizás:
Measure Avg =
VAR __Date = MAX( 'check_dates_table'[date_check] )
VAR __Year = YEAR( __Date )
VAR __Month = MONTH( __Date )
VAR __Table = FILTER( ALL( 'sales_table'), YEAR( [date_sales] ) = __Year && MONTH( [date_sales] ) = __Month )
VAR __Result = AVERAGEX( __Table, [sales] )
RETURN
__Result
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |