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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Syndicate_Admin
Administrator
Administrator

Rellenar valores con la columna calculada daX

Hola a todos

Necesito ayuda para tratar de rellenar los valores en función de la fecha que tengo para cada personal.

Vea el ejemplo a continuación con la columna que se espera que se cree junto con el enlace a los datos de muestra:

rush_0-1653389830942.png

Datos de muestra para rellenar datos

Gracias de antemano.

1 ACCEPTED SOLUTION

@rush

Por favor, pruebe

Employment Status New =
VAR CurrentDate = TableName[Date]
VAR CurrentStatus = TableName[Employment Status]
VAR CurrentIdTable =
    CALCULATETABLE ( TableName, ALLEXCEPT ( TableName, TableName[ID] ) )
VAR NoBlanksTable =
    FILTER ( CurrentIdTable, TableName[Employment Status] <> BLANK () )
VAR NoBlanksTableBefore =
    FILTER ( NoBlanksTable, TableName[Date] < CurrentDate )
VAR LastDateWithData =
    MAXX ( NoBlanksTableBefore, TableName[Date] )
VAR LastStatus =
    MAXX (
        FILTER ( NoBlanksTableBefore, TableName[Date] = LastDateWithData ),
        TableName[Employment Status]
    )
RETURN
    IF ( ISBLANK ( CurrentStatus ), LastStatus, CurrentStatus )

View solution in original post

15 REPLIES 15
Syndicate_Admin
Administrator
Administrator

@rush

Solo quería agregar que mi código recupera el último valor disponible antes del espacio en blanco en caso de que tenga varios valores disponibles por Id con espacios en blanco entre los valores.

@tamerj1 Gracias, pero olvidé mencionar que el personal puede tener múltiples estados de empleo que deben completarse hasta el siguiente, si lo hay. Actualmente, no lo hace.

@rush

Esto es exactamente lo que hace

Syndicate_Admin
Administrator
Administrator

@rush La solución fácil está a continuación:

Capture.JPG

Syndicate_Admin
Administrator
Administrator

@rush Pruebe esta columna

Columna 2 = CALCULAR(MÁXIMO('Tabla'[Estado]),TODOSEXCEPTO('Tabla',«Tabla»[ID]))
Syndicate_Admin
Administrator
Administrator

Hola @rush ,

Aquí, pruebe esto:

New Value = 
VAR LastNonBlankID =
    CALCULATE (
        LASTNONBLANK ( FillDown[ID], 1 ),
        FILTER (
            ALL ( FillDown),
            FillDown[ID] <= EARLIER ( FillDown[ID])
                && NOT ( ISBLANK ( FillDown[Employment Status] ) )
        )
    )
RETURN
    CALCULATE (
        Max ( FillDown[Employment Status] ),
        FILTER ( ALL ( FillDown ), FillDown[ID] = LastNonBlankID )
    )

Resultado:

PC2790_0-1653392598148.png

@PC2790 Gracias, pero olvidé mencionar que el personal puede tener múltiples estados de empleo que deben completarse hasta el siguiente, si lo hay. Actualmente, no lo hace.

Syndicate_Admin
Administrator
Administrator

@rush

puede utilizar

Employment Status New =
VAR CurrentStatus = TableName[Employment Status]
VAR CurrentIdTable =
    CALCULATETABLE ( TableName, ALLEXCEPT ( TableName, TableName[ID] ) )
VAR NoBlanksTable =
    FILTER ( CurrentIdTable, TableName[Employment Status] <> BLANK () )
VAR LastDateWithData =
    MAXX ( NoBlanksTable, TableName[Date] )
VAR LastStatus =
    MAXX (
        FILTER ( NoBlanksTable, TableName[Date] = LastDateWithData ),
        TableName[Employment Status]
    )
RETURN
    IF ( ISBLANK ( CurrentStatus ), LastStatus, CurrentStatus )

@tamerj1 Gracias, pero olvidé mencionar que el personal puede tener múltiples estados de empleo que deben completarse hasta el siguiente, si lo hay. Actualmente, no lo hace.

@rush

Por favor, pruebe

Employment Status New =
VAR CurrentDate = TableName[Date]
VAR CurrentStatus = TableName[Employment Status]
VAR CurrentIdTable =
    CALCULATETABLE ( TableName, ALLEXCEPT ( TableName, TableName[ID] ) )
VAR NoBlanksTable =
    FILTER ( CurrentIdTable, TableName[Employment Status] <> BLANK () )
VAR NoBlanksTableBefore =
    FILTER ( NoBlanksTable, TableName[Date] < CurrentDate )
VAR LastDateWithData =
    MAXX ( NoBlanksTableBefore, TableName[Date] )
VAR LastStatus =
    MAXX (
        FILTER ( NoBlanksTableBefore, TableName[Date] = LastDateWithData ),
        TableName[Employment Status]
    )
RETURN
    IF ( ISBLANK ( CurrentStatus ), LastStatus, CurrentStatus )

Hi Tamerj,

Probé su solución y estaba funcionando bien en toda la mesa, pero por alguna razón cuando el estado antes y después 'is_available' es CERO, la columna calculada no funcionaCapture.PNG

@amrhitch

Lo miré detenidamente y todavía no estoy seguro de si el problema es el resultado de la confusión del motor entre 0 y en blanco. Me parece que es necesario agregar las columnas [MAX] y [MIN] a los argumentos ALLEXCEPT. Por favor, haga eso y hágamelo saber si funciona.

@amrhitch

Basta con cambiar la línea 18

IF ( CurrentStatus > 0, CurrentStatus, LastStatus )

Muchas gracias. @tamerj1 Funciona muy bien. 🙏

@rush

Ok, supongo que tienes razón. Déjame tratar de arreglarlo

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors