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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Anonymous
Not applicable

DAX fuera de la memoria - Necesita ayuda en DAX

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:

Mis datos

Lo mejor y gracias

LA

12 REPLIES 12
harshnathani
Community Champion
Community Champion

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.

2.JPG

Publicar una solución con medidas

PreviousT1 Absent Dte ( PreviousT1 Absent Dte)

var _c - CALCULATE(MAX(AttendanceMaster[AttendanceDate]), AttendanceMaster[IsPresent] á FALSe())

fue _previousdate ?
CALCULATE(MAX(AttendanceMaster[AttendanceDate]),FILTER(ALLEXCEPT(AttendanceMaster,AttendanceMaster[ChildID]),AttendanceMaster[AttendanceDate] < _c && AttendanceMaster[IsPresent] á FALSE()))


devolución
_previousdate
PreviousT2 Absent Dte ( PreviousT2 Absent Dte)

var _c - CALCULATE(MAX(AttendanceMaster[AttendanceDate]), AttendanceMaster[IsPresent] á FALSe())

fue _previousdate ?
CALCULATE(MAX(AttendanceMaster[AttendanceDate]),FILTER(ALLEXCEPT(AttendanceMaster,AttendanceMaster[ChildID]),AttendanceMaster[AttendanceDate] < _c && AttendanceMaster[IsPresent] á FALSE()))

fue _previousdateminus2 ?
CALCULATE(MAX(AttendanceMaster[AttendanceDate]),FILTER(ALLEXCEPT(AttendanceMaster,AttendanceMaster[ChildID]),AttendanceMaster[AttendanceDate] < _previousdate && AttendanceMaster[IsPresent] á FALSE()))


devolución
_previousdateminus2
Contador ( Counter)

var _pp [PreviousT1 Absent Dte] + 1
var _ee [PreviousT2 Absent Dte] + 2
devolución
IF( _pp á _ee ,(IF(MAX(AttendanceMaster[AttendanceDate]) á _pp,1)))
Además, también puede colocar los siguientes filtros visuales.
3.JPG
Avísame si esto funciona para ti.

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)

Anonymous
Not applicable

@harshnathani ,

Gracias, pero el enlace necesita el código para acceder.

Mejor

Anonymous
Not applicable

@harshnathani

Gracias, pero su DAX no se mide lo que quiero decir.

Gracias

amitchandak
Super User
Super User

@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

Anonymous
Not applicable

@Pragati11,

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

Anonymous
Not applicable

@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

Anonymous
Not applicable

@Pragati11

Observó

@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.



Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!

DAX is for Analysis. Power Query is for Data Modeling


Proud to be a Super User!

MCSA: BI Reporting

Hola @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

Best Regards,

Pragati Jain


MVP logo


LinkedIn | Twitter | Blog YouTube 

Did I answer your question? Mark my post as a solution! This will help others on the forum!

Appreciate your Kudos!!

Proud to be a Super User!!

Pragati11
Super User
Super User

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:

devolución
IF ( IsStartofAbsence, LastAbsenceDay_ )
devolución
IF ( IsStartofAbsence, attendanceMaster[AttendanceDate] )
El que funciona correctamente se resalta en VERDE donde se devuelve una columna,lo que tiene sentido, ya que se trata de una columna calculada.
El resaltado en RED le está dando problemas, porque usted está tratando de devolver un VARIABLE creado dentro de este DAX,que no es la manera correcta de hacer.
Use la siguiente parte de su DAX de Last date Consecutive of absence para crear una nueva columna en lugar de crear una variable dentro de dax y, a continuación, utilísela en la expresión DAX.
VAR LastAbsenceDay_
CALCULAR (
MAX ( AttendanceMaster[AttendanceDate] ),
ALLEXCEPT ( AttendanceMaster, AttendanceMaster[ChildID] ),
AttendanceMaster[AttendanceDate] < NextPrecense_
)
Espero que esto ayude.
Si esto ayuda y resuelve el problema, apreciar un Kudos y marcarlo como una solución! 🙂
Gracias
Pragati

Best Regards,

Pragati Jain


MVP logo


LinkedIn | Twitter | Blog YouTube 

Did I answer your question? Mark my post as a solution! This will help others on the forum!

Appreciate your Kudos!!

Proud to be a Super User!!

Helpful resources

Announcements
PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.