The ultimate Microsoft Fabric, Power BI, Azure AI, and SQL learning event! Join us in Stockholm, Sweden from September 24-27, 2024.
2-for-1 sale on June 20 only!
Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
Hola a todos
Tengo un problema con DAX se queda sin memoria.
En primer lugar, he utilizado este DAX:
First date of Consecutive absence =
IF (
NOT AttendanceMaster[IsPresent],
VAR NextPrecense_ =
CALCULATE (
MIN ( AttendanceMaster[AttendanceDate] ),
ALLEXCEPT ( AttendanceMaster, AttendanceMaster[ChildID] ),
AttendanceMaster[AttendanceDate] > EARLIER ( AttendanceMaster[AttendanceDate] ),
AttendanceMaster[IsPresent] = TRUE ()
)
VAR LastAbsenceDay_ =
CALCULATE (
MAX ( AttendanceMaster[AttendanceDate] ),
ALLEXCEPT ( AttendanceMaster, AttendanceMaster[ChildID] ),
AttendanceMaster[AttendanceDate] < NextPrecense_
)
VAR NumConsecutiveAbsentDays_ =
CALCULATE (
COUNT ( AttendanceMaster[AttendanceDate] ),
ALLEXCEPT ( AttendanceMaster, AttendanceMaster[ChildID] ),
AttendanceMaster[AttendanceDate] >= EARLIER ( AttendanceMaster[AttendanceDate] ),
AttendanceMaster[AttendanceDate] < NextPrecense_
)
VAR IsStartofAbsence =
VAR PreviousDate_ =
CALCULATE (
MAX ( AttendanceMaster[AttendanceDate] ),
ALLEXCEPT ( AttendanceMaster, AttendanceMaster[ChildID] ),
AttendanceMaster[AttendanceDate] < EARLIER ( AttendanceMaster[AttendanceDate] )
)
RETURN
IF (
ISBLANK ( PreviousDate_ ),
TRUE (),
CALCULATE (
DISTINCT ( AttendanceMaster[IsPresent] ),
ALLEXCEPT ( AttendanceMaster, AttendanceMaster[ChildID] ),
AttendanceMaster[AttendanceDate] = PreviousDate_
)
)
RETURN
IF ( IsStartofAbsence, AttendanceMaster[AttendanceDate] )
)
El segundo, usé este DAX también y me quedo sin memoria:
Last date Consecutive of absence =
IF (
NOT AttendanceMaster[IsPresent],
VAR NextPrecense_ =
CALCULATE (
MIN ( AttendanceMaster[AttendanceDate] ),
ALLEXCEPT ( AttendanceMaster, AttendanceMaster[ChildID] ),
AttendanceMaster[AttendanceDate] > EARLIER ( AttendanceMaster[AttendanceDate] ),
AttendanceMaster[IsPresent] = TRUE ()
)
VAR LastAbsenceDay_ =
CALCULATE (
MAX ( AttendanceMaster[AttendanceDate] ),
ALLEXCEPT ( AttendanceMaster, AttendanceMaster[ChildID] ),
AttendanceMaster[AttendanceDate] < NextPrecense_
)
VAR NumConsecutiveAbsentDays_ =
CALCULATE (
COUNT ( AttendanceMaster[AttendanceDate] ),
ALLEXCEPT ( AttendanceMaster, AttendanceMaster[ChildID] ),
AttendanceMaster[AttendanceDate] >= EARLIER ( AttendanceMaster[AttendanceDate] ),
AttendanceMaster[AttendanceDate] < NextPrecense_
)
VAR IsStartofAbsence =
VAR PreviousDate_ =
CALCULATE (
MAX ( AttendanceMaster[AttendanceDate] ),
ALLEXCEPT ( AttendanceMaster, AttendanceMaster[ChildID] ),
AttendanceMaster[AttendanceDate] < EARLIER ( AttendanceMaster[AttendanceDate] )
)
RETURN
IF (
ISBLANK ( PreviousDate_ ),
TRUE (),
CALCULATE (
DISTINCT ( AttendanceMaster[IsPresent] ),
ALLEXCEPT ( AttendanceMaster, AttendanceMaster[ChildID] ),
AttendanceMaster[AttendanceDate] = PreviousDate_
)
)
RETURN
IF ( IsStartofAbsence, LastAbsenceDay_ )
)
No sé cómo arreglar esto. Tal vez haya algún DAX simple para medir el número total de niños que han ausente 3 o más días consecutivos. Por favor, ayúdame a hacer esto y gracias por tu ayuda.
Lo siento por la etiqueta, pero por favor ayúdame a solucionar este problema o ayúdame a encontrar otro DAX:
@Greg_Deckler @darlove@harshnathani @amitchandak @amitchandak @amitchandak @amitchandak @amitchandak@amitchandak @amitchandak @amitchandak @amitchandak @amitchandak @mahoneypat de @amitchandak @amitch... @camargos88 @amitchandak de @amitchandak de @amitchandak
@vivran22 @bboobe @LAndes @AlB @Pragati11 @parry2k @az38 @edhans
Aquí, se adjuntan los datos en este enlace:
Lo mejor y gracias
LA
Hola @Lorens29 ,
Compruebe su solución. Recibí esto como la salida cuando probé Columnas calculadas. (Las medidas DAX que ha escrito).
Puede que me esté perdiendo algo. Pero pls cheque.
Publicar una solución con medidas
saludos
Harsh Nathani
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución! Apreciar con un Kudos!! (Haga clic en el botón Pulgares arriba)
Hola @Lorens29 ,
Por favor, encuentre el enlace al archivo.
saludos
Harsh Nathani
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución! Apreciar con un Kudos!! (Haga clic en el botón Pulgares arriba)
@Lorens29 , ¿puede explicar la lógica funcional que desea lograr? Anteriormente es potente, pero puede ser costoso si no se utiliza correctamente.
Así que si ahora un poco de ting exacto que debería preferir que
como si ahora tengo fecha continua El en lugar de encontrar la última fecha usando anteriormente puedo asumir la última fecha como fecha -1
fecha: antes (Fecha) -1
Gracias por la sugerencia de esta función DAX. Creo que tienes razón.
Esto funciona bien.
¿Puede ayudarme de nuevo para el DAX creado para medir directamente total ChildID que ha ausente 3 o más días consecutivos?
Gracias
@amitchandak
La función de he utilizado DAX para la primera fecha de ausencia consecutiva es calcular el número de niño que ha ausente 3 o más días consecutivos. Después de crear esta columna, se medirá el número total de ChildID en función de la fecha que aparece esa columna.
¿Qué opinas de esto? ¿Hay mejores maneras de medir esto? Por favor, ayúdame a terminar esto.
Gracias
@AlB ,
Lo siento. Salta en este post.
Gracias por eso. Creo que este DAX es genial.
¿Qué opina de crear DAX directo para medir el número total de ChildID que ha ausente 3 o más días consecutivos?
¿Hay algún mejor enfoque para medir esto entonces mi enfoque?
Gracias
@Lorens29 está utilizando CALCULATE mucho. Cada vez que usas eso, hace una transición de contexto que copia los filtros actuales, los elimina, establece un contexto de fila, luego vuelve a aplicar los filtros y 2-3 otras cosas que no pretendo entender del todo. 😁 La transición de contexto es costosa, y lo está haciendo mucho en una medida, sobre lo que probablemente es un gran conjunto de datos.
Creo que puedes evitareso eso de esta manera. Su medida original (esto es en realidad una variable, pero se puede ver lo que estoy haciendo:
LastAbsenceDay_ =
CALCULATE(
MAX( AttendanceMaster[AttendanceDate] ),
ALLEXCEPT(
AttendanceMaster,
AttendanceMaster[ChildID]
),
AttendanceMaster[AttendanceDate] < NextPrecense_
)
Podría ser reescrito de esta manera - no CALCULATE
LastAbsenceDay_ =
MAXX(
FILTER(
ALLEXCEPT(
AttendanceMaster,
AttendanceMaster[ChildID]
),
AttendanceMaster[AttendanceDate] < NextPrecense_
),
AttendanceMaster[AttendanceDate]
)
También podría considerar cambiar ALLEXCEPT con ALL. No sé cuántas columnas tiene, pero el ALLEXCEPT eliminando el filtro en todas excepto una columna significa que todas las demás columnas se están cargando en la memoria. Si tiene 50 columnas, significa que está quitando el filtro en 49 de ellas. Con ALL() podrías eliminar con precisión los filtros de las columnas específicas que necesitas, y eso podría ser menos que el 49 en mi ejemplo. Si su tabla tiene 3 columnas, entonces probablemente no importa.
DAX is for Analysis. Power Query is for Data Modeling
Proud to be a Super User!
MCSA: BI ReportingHola @Lorens29 ,
Me alegro de que haya funcionado para ti. Por favor, márquelo como una solución para que otros se refieran en el futuro.
Además, si tiene una consulta adicional, puede publicar un nuevo subproceso. 🙂
Si esto ayuda y resuelve el problema, apreciar un Kudos y marcarlo como una solución! 🙂
Gracias
Pragati
Hola @Lorens29 ,
Es una expresión muy grande de DAX.
La única diferencia entre la 1a y la 2a expresión DAX es la instrucción RETURN:
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
Check out the June 2024 Power BI update to learn about new features.