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

The ultimate Microsoft Fabric, Power BI, Azure AI & SQL learning event! Join us in Las Vegas from March 26-28, 2024. Use code MSCUST for a $100 discount. Register Now

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
Fabric Community Conference

Microsoft Fabric Community Conference

Join us at our first-ever Microsoft Fabric Community Conference, March 26-28, 2024 in Las Vegas with 100+ sessions by community experts and Microsoft engineering.

Top Solution Authors