Eliminar un solo filtro de una tabla

Un usuario Pregunto ✅

michaelccdf

Estoy tratando de eliminar solo un filtro (del panel de filtros) de una tabla a continuación. Hay otros filtros de cortadoras que me gustaría conservar, por lo que no puedo usar TODOS. Supongo que podría usar ALLEXCEPT, pero luego tendría que nombrar todos los filtros que me gustaría mantener (que serán todos menos uno). ¿Hay una manera más sencilla?

Att Taken = 
//Unfilter just the IsAbsenceTaken column in the Attendance table, this is the line that I can't figure out
var AttendanceUnfiltered = FILTER(Attendance,ALL(Attendance[IsAbsenceTaken]))

//Build a summary table
var SummaryTable = SUMMARIZE(AttendanceUnfiltered,
                            Attendance[CourseGroupKey],
                            Attendance[date],
                            Attendance[period],
                            "IsAttendanceTaken",MAX(Attendance[IsAbsenceTaken])
                                )
RETURN
//return the percentage of periods in which attendance was taken
SUMX(SummaryTable,[IsAttendanceTaken]) / COUNTROWS(SummaryTable)

SOLUCIÓN:

Estoy poniendo la solución aquí, las dos respuestas a continuación me llevaron a ella (acepté la primera cronológicamente como la respuesta):

Solucion 1: Cree una columna calculada (CourseGroupDatePeriodKey) con las columnas que estaba pasando a SUMMARIZE arriba. La columna calculada es una sola columna que luego me permite usar DISTINCTCOUNT. DISTINCTCOUNT se puede envolver en CALCULATE que puede cambiar el contexto del filtro.

Att Taken = 

//count of distinct number of course groups, dates and periods (class sessions).  Clear the IsAbsenceTaken filter in the calculate statement
var AllClassSessions = CALCULATE(DISTINCTCOUNT(Attendance[CourseGroupDatePeriodKey]),ALL(Attendance[IsAbsenceTaken]))

//count of class sessions where attendance was taken
var AttendanceTaken =  CALCULATE(DISTINCTCOUNT(Attendance[CourseGroupDatePeriodKey]),Attendance[IsAbsenceTaken] = 1)


RETURN
// divide class sessions in which attendance was taken by all class sessions.
AttendanceTaken / AllClassSessions

Solucion 2: Cree una nueva tabla calculada para períodos como se sugiere en la segunda respuesta. (En realidad, terminé creando esto en la base de datos en lugar de en Power BI, pero se podría hacer con una tabla calculada).

tablasPNG.PNG

Esta tabla se vincula a la tabla de hechos principal mediante la columna CourseGroupDatePeriodKey creada en la solución 1 anterior, con una relación bidireccional. Todo lo que filtre con segmentaciones en la tabla de hechos principal también se filtrará en la nueva tabla. Luego cambio el contexto del filtro usando CALCULATE de modo que todas las filas se tengan en cuenta (TODOS (AttTaken[IsAbsenceTaken]):

Att Taken 2 = 
var AttendanceTaken= CALCULATE(COUNTROWS(AttTaken),AttTaken[IsAbsenceTaken] = 1)
var AllClassSessions = CALCULATE(COUNTROWS(AttTaken),ALL(AttTaken[IsAbsenceTaken]))

RETURN
AttendanceTaken / AllClassSessions

Tenga en cuenta que quería mantener el modelo como un esquema de estrella simple para poder usar filtros bidireccionales sin introducir ambigüedad.

JustJan

Hola,

si usa calcular con todo (nombre de columna), entonces libera el filtro en la columna. (Solo CALCULATE y CALCULATETABLE cambian el contexto del filtro)

entonces sería algo como:
calcular («su cálculo» como máximo (A) o suma (B),

Todo (nombre de la columna)
)

https://docs.microsoft.com/en-us/dax/calculate-function-dax

kentyler

No tengo claro qué quiere decir con «más simple». Parece que ALLEXCEPT está diseñado explícitamente para hacer lo que necesita hacer. No existe una función paralela como REMOVEFILTER () que solo eliminaría un filtro.

Su deseo de «simplificación» puede estar vinculado a algún problema que hace que su modelo de datos sea «complicado» que está surgiendo cuando intenta escribir este código.

Quizás si su modelo de datos tuviera una tabla para ROLL, es decir, los estudiantes que se esperaba que asistieran, y otra para ACTUALATTENDENCE, que registró a los estudiantes de ROLL que realmente asistieron, entonces no necesitaría la marca «isAbsenceTaken». Esto cambiaría mucho la forma en que calculó la asistencia …

Otra posibilidad a la que podría apuntar este problema es que tomar la asistencia para «Períodos» donde la asistencia se toma para algunos períodos y no para otros podría significar que «Período» es una tabla FACT y no una DIMENSIÓN de asistencia. y la bandera «IsAbsenceTaken» realmente se aplica a un período y no a un estudiante (ya que probablemente no sea una pregunta que se haría sobre cada estudiante en un período, sino sobre el período en su conjunto).

Si desea hablar sobre su modelo de datos, envíeme un correo electrónico con el día y la hora que más le convenga, y estaré encantado de echarle un vistazo en una pantalla compartida.

Soy un entrenador personal de Power Bi Aprendo algo cada vez que contesto una pregunta

Las reglas de oro para Power BI

  1. Utilice una tabla de calendario. Es preferible una tabla de fechas personalizada a usar las capacidades de manejo automático de fecha / hora de Power BI. https://www.youtube.com/watch?v=FxiAYGbCfAQ
  2. Cree su modelo de datos como un esquema en estrella. La creación de un esquema en estrella en Power BI es la mejor práctica para mejorar el rendimiento y, lo que es más importante, para garantizar resultados precisos. https://www.youtube.com/watch?v=1Kilya6aUQw
  3. Utilice una pequeña configuración de datos de muestra al desarrollar. Cuando construya sus medidas y columnas calculadas, utilice siempre una pequeña cantidad de datos de muestra para que sea más fácil confirmar que está obteniendo los números correctos.
  4. Guarde todos sus cálculos intermedios en VAR cuando esté escribiendo medidas. Puede devolver estos VAR intermedios en lugar de su resultado final para verificar sus pasos a lo largo del camino.

JustJan

Hola,

si usa calcular con todo (nombre de columna), entonces libera el filtro en la columna. (Solo CALCULATE y CALCULATETABLE cambian el contexto del filtro)

entonces sería algo como:
calcular («su cálculo» como máximo (A) o suma (B),

Todo (nombre de la columna)
)

https://docs.microsoft.com/en-us/dax/calculate-function-dax

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *