Forum Discussion
Problema ALL/ALLEXCEPT
Querida comunidad,
Estoy trabajando en el libro Supercharge PowerBI y me estoy encontrando con algo que simplemente no entiendo.
Tengo una matriz con País como filtro y estoy comparando la diferencia entre usar la función ALL para calcular el monto total de ventas con toda la tabla versus solo una columna con las siguientes medidas:
Ventas globales totales = CALCULAR([Ventas totales];TODO(Territorios))
De hecho, tiene razón, está usando la columna 'Calendario' [DayNumberOfWeek]. La razón es que la columna 'Calendar'[DayName] está ordenada por 'Calendar'[DayNumberOfWeek], por lo que Power BI tiene que incluirla en la tabla de resumen subyacente para que pueda mostrarla correctamente en el objeto visual.
Si agrega un REMOVEFILTERS o ALL en 'Calendar' [DayNumberOfWeek] a su medida, así como el existente en 'Calendar' [DayName], entonces eso debería darle los resultados que espera.
En un visual de tabla o matriz, los encabezados de columna y fila se aplican a cada celda individual para calcular el valor de esa combinación de filtros, por lo que si tuviera meses en la fila y día de la semana en las columnas, entonces para cada celda usaría (mes, día de la semana) como filtro combinado.
Posiblemente la mejor manera de pensar en ordenar columnas es como si fueran encabezados ocultos, por lo que también se incluyen en el filtro, por lo que en mi ejemplo anterior los filtros aplicados serían en realidad ( mes, número de mes, día de la semana, número de día de la semana ) ya que cada una de las columnas base requiere que se incluya una columna de ordenación.
7 Replies
- Syndicate_AdminAdministrator
El ' Calendario circundante se debe a que CALENDARIO es una función DAX, por lo que el ' es necesario para distinguir su tabla Calendario de la función. No te preocupes, no está causando el problema.
Parece que se están aplicando más filtros de los que sabe, Power BI a veces crea tablas de fechas locales, que no puede ver en Power BI Desktop, y podría estar aplicando un filtro a eso.
Para ver exactamente qué filtros se están aplicando, abra Performance Analyzer en la cinta de opciones Ver, haga clic en Iniciar grabación y, a continuación, en Actualizar elementos visuales. Expanda la entrada del objeto visual de la matriz y copie el código. A continuación, puede pegarlo en DAX Studio, o en cualquier editor de texto, y examinar exactamente qué filtros se están aplicando.
- Syndicate_AdminAdministrator
Estimado johnt75,
Gracias por su rápida respuesta. He seguido los pasos que describiste y este fue el resultado dentro de DAX Studio:
Consulta DAX
DEFINIR
VAR __DS0Core =
RESUMIRCOLUMNAS(
ROLLUPADDISSUBTOTAL(
ROLLUPGROUP('Calendar'[DayName], 'Calendar'[DayNumberOfWeek]), "IsGrandTotalRowTotal"
),
"Total_Sales", 'Ventas'[Ventas totales],
"Total_Sales_for_All_Days_Selected_Dates", 'Ventas'[Ventas totales para todos los días fechas seleccionadas],
"v__Sales_for_All_Days_Selected_Dates", 'Ventas'[% ventas para todos los días fechas seleccionadas],
"Total_Calendar_Sales", 'Ventas'[Ventas totales del calendario],
"Total_Days_Names_Sales", 'Ventas'[Total de días nombra ventas]
)
VAR __DS0PrimaryWindowed =
TOPN(
502,
__DS0Core,
[IsGrandTotalRowTotal],
0,
'Calendario'[DayNumberOfWeek],
1,
'Calendario'[DayName],
1
)
EVALUAR
__DS0PrimaryWindowed
ORDENAR POR
[IsGrandTotalRowTotal] DESC, 'Calendar'[DayNumberOfWeek], 'Calendar'[DayName]¿Estoy interpretando esto correctamente que también hace algo con Calendar DayNumberOfWeek? Si es así, ¿podría explicarme por qué está sucediendo esto y qué está haciendo? Y solo para su información. La tabla de calendario no es una creada con DAX, se importó desde un archivo de Excel. Y también he deshabilitado la capacidad de PowerBI para crear sus propias tablas de citas. ¡Muchas gracias de nuevo!
Gr DLU
- Syndicate_AdminAdministrator
De hecho, tiene razón, está usando la columna 'Calendario' [DayNumberOfWeek]. La razón es que la columna 'Calendar'[DayName] está ordenada por 'Calendar'[DayNumberOfWeek], por lo que Power BI tiene que incluirla en la tabla de resumen subyacente para que pueda mostrarla correctamente en el objeto visual.
Si agrega un REMOVEFILTERS o ALL en 'Calendar' [DayNumberOfWeek] a su medida, así como el existente en 'Calendar' [DayName], entonces eso debería darle los resultados que espera.
- Syndicate_AdminAdministrator
Cuando se usa así en CALCULATE, ALL debe considerarse como "Eliminar filtros de". De hecho, hay una función llamada REMOVEFILTERS que es solo un alias de todo lo que solo se puede usar dentro del cálculo. Dentro del cálculo, no devuelve todos los valores, elimina todos los filtros aplicados directamente.
ALL ( TableName ) quita todos los filtros de la tabla. ALL ( TableName[ColumnName] ) quita los filtros que se aplican solo a esa columna. No elimina los filtros aplicados
a otras columnas de la misma tabla.
Entonces, como sugiere @johnt75 , hay otros filtros presentes en la tabla de fechas, pero no en la tabla de su territorio. Por ejemplo, está eliminando cualquier filtro aplicado directamente a dayname, pero si hay un filtro en el año, todavía estaría presente.