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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

Creación de bandejas de fecha dinámicas basadas en la fecha de alternancia verdadero/falso

¡Buenas tardes!

Me han pedido que ejecute análisis de los datos de asistencia de mi empresa. El conjunto de datos contiene una fila por fecha por empleado para todo 2023, y luego una marca de verdadero / falso que indica si han declarado que estarán disponibles para trabajar ese día. Vea los datos de ejemplo:

FechaNombreDisponible
1/1/2023BarneyVERDADERO
1/2/2023BarneyVERDADERO
1/3/2023BarneyFALSO
1/4/2023BarneyFALSO
1/5/2023BarneyFALSO
1/6/2023BarneyVERDADERO
1/7/2023BarneyVERDADERO
1/8/2023BarneyFALSO
1/9/2023BarneyVERDADERO
1/10/2023BarneyVERDADERO
1/11/2023BarneyFALSO
1/12/2023BarneyFALSO
1/13/2023BarneyFALSO
1/14/2023BarneyFALSO
1/1/2023FredFALSO
1/2/2023FredFALSO
1/3/2023FredFALSO
1/4/2023FredVERDADERO
1/5/2023FredVERDADERO
1/6/2023FredVERDADERO
1/7/2023FredVERDADERO
1/8/2023FredVERDADERO
1/9/2023FredFALSO
1/10/2023FredFALSO
1/11/2023FredFALSO
1/12/2023FredVERDADERO
1/13/2023FredVERDADERO
1/14/2023FredVERDADERO

Con el propósito de programar, me han pedido que tome esos datos y cree una referencia rápida para cuando cada empleado esté disponible, y por cuántos días cada vez hasta su próximo segmento de indisponibilidad. En otras palabras, tome la tabla anterior y conviértala en algo que se vea así:

NombreFecha de disponibilidadDías disponibles
Barney1/1/20232
Barney1/6/20232
Barney1/9/20232
Fred1/4/20235
Fred1/12/20233

Mi idea era encontrar una manera de agrupar cada bloque de disponibilidad por empleado, y luego crear medidas para encontrar la primera fecha en cada grupo y luego cuántos días incluye ese grupo. Aunque por la vida de mí no puedo entender cómo.

Para simplificar, no estoy corrigiendo los días de disponibilidad para los fines de semana y días festivos de la empresa.

¡Gracias de antemano!

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

¡¡Muchas gracias!!

Syndicate_Admin
Administrator
Administrator

let
    Source = Excel.Workbook(File.Contents("C:\Users\User\Desktop\dynamic.xlsx"), null, true),
    tbl_Sheet = Source{[Item="tbl",Kind="Sheet"]}[Data],
    PromoteHeaders = Table.PromoteHeaders(tbl_Sheet, [PromoteAllScalars=true]),
    typx = Table.TransformColumnTypes(PromoteHeaders,{{"Date", type date}, {"Name", type text}, {"Available", type logical}}),
    PreviousRow = Table.FromColumns (Table.ToColumns(typx)&{{false}&List.RemoveLastN(typx[Available],1)}),
    Check = Table.AddColumn(PreviousRow, "Custom", each if [Column3] =true and[Column4] =false then [Column1] else null),
    GroupRows = Table.Group(Check, {"Column2"}, {{"Day", each _, type table [Column1=nullable date, Column2=nullable text, Column3=nullable logical, Column4=logical, Custom=nullable date]}}),
    f = (x)=> Table.FillDown(x,{"Custom"}),
    Custom1 = Table.TransformColumns(GroupRows,{"Day",f}),
    #"Removed Other Columns" = Table.SelectColumns(Custom1,{"Day"}),
    #"Expanded Day" = Table.ExpandTableColumn(#"Removed Other Columns", "Day", {"Column1", "Column2", "Column3", "Column4", "Custom"}, {"Column1", "Column2", "Column3", "Column4", "Custom"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Day",{"Column4"}),
    #"Added Custom" = Table.AddColumn(#"Removed Columns", "Day", each if [Column3] = true then 1 else 0),
    #"Changed Type" = Table.TransformColumnTypes(#"Added Custom",{{"Day", type number}, {"Custom", type date}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Column2", "Name"}, {"Column1", "Date"}, {"Custom", "FDate"}, {"Column3", "Available"}}),
    #"Filtered Rows" = Table.SelectRows(#"Renamed Columns", each ([FDate] <> null))
in
    #"Filtered Rows"

Archivo PBIX de muestra adjunto
https://dropmefiles.com/LrZVH

Syndicate_Admin
Administrator
Administrator

¿Esta solución para usted?

let
    Source = Excel.Workbook(File.Contents("C:\Users\User\Desktop\dynamic.xlsx"), null, true),
    tbl_Sheet = Source{[Item="tbl",Kind="Sheet"]}[Data],
    PromoteHeaders = Table.PromoteHeaders(tbl_Sheet, [PromoteAllScalars=true]),
    typx = Table.TransformColumnTypes(PromoteHeaders,{{"Date", type date}, {"Name", type text}, {"Available", type logical}}),
    PreviousRow = Table.FromColumns (Table.ToColumns(typx)&{{false}&List.RemoveLastN(typx[Available],1)}),
    Check = Table.AddColumn(PreviousRow, "Custom", each if [Column3] =true and[Column4] =false then [Column1] else null),
    GroupRows = Table.Group(Check, {"Column2"}, {{"Day", each _, type table [Column1=nullable date, Column2=nullable text, Column3=nullable logical, Column4=logical, Custom=nullable date]}}),
    f = (x)=> Table.FillDown(x,{"Custom"}),
    Custom1 = Table.TransformColumns(GroupRows,{"Day",f}),
    #"Removed Other Columns" = Table.SelectColumns(Custom1,{"Day"}),
    #"Expanded Day" = Table.ExpandTableColumn(#"Removed Other Columns", "Day", {"Column1", "Column2", "Column3", "Column4", "Custom"}, {"Column1", "Column2", "Column3", "Column4", "Custom"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Day",{"Column4"}),
    #"Added Custom" = Table.AddColumn(#"Removed Columns", "Day", each if [Column3] = true then 1 else 0),
    #"Changed Type" = Table.TransformColumnTypes(#"Added Custom",{{"Day", type number}, {"Custom", type date}}),
    #"Renamed Columns" = Table.RenameColumns(#"Changed Type",{{"Column2", "Name"}, {"Column1", "Date"}, {"Custom", "FDate"}, {"Column3", "Available"}}),
    #"Filtered Rows" = Table.SelectRows(#"Renamed Columns", each ([FDate] <> null))
in
    #"Filtered Rows"


Archivo PBIX de muestra adjunto
https://dropmefiles.com/SBU3N

Syndicate_Admin
Administrator
Administrator

Hola

Por favor, compruebe la imagen de abajo y el archivo pbix adjunto.

Es para crear una nueva tabla.

Jihwan_Kim_0-1675053208860.png

New Table = 
VAR _indexcolumn =
    ADDCOLUMNS ( Data, "@index", IF ( Data[Available] = TRUE (), 0, 1 ) )
VAR _groupcolumn =
    ADDCOLUMNS (
        _indexcolumn,
        "@group",
            SUMX (
                FILTER (
                    _indexcolumn,
                    Data[Name] = EARLIER ( Data[Name] )
                        && Data[Date] <= EARLIER ( Data[Date] )
                ),
                [@index]
            )
    )
VAR _filterworkdays =
    FILTER ( _groupcolumn, Data[Available] = TRUE () )
RETURN
    SUMMARIZE (
        GROUPBY (
            _filterworkdays,
            Data[Name],
            [@group],
            "@availabilitydate", MINX ( CURRENTGROUP (), Data[Date] ),
            "@availabledays", SUMX ( CURRENTGROUP (), 1 )
        ),
        Data[Name],
        [@availabilitydate],
        [@availabledays]
    )
Syndicate_Admin
Administrator
Administrator

¿Suerte esta opción te conviene?

позволять
     Источник = Excel.Workbook(File.Contents("C:\Users\User\Desktop\dynamic.xlsx"), null, true),
     tbl_Sheet = Источник{[Item="tbl",Kind="Лист"]}[Данные],
     PromoteHeaders = Table.PromoteHeaders(tbl_Sheet, [PromoteAllScalars=true]),
     typx = Table.TransformColumnTypes(PromoteHeaders,{{"Дата", введите дату}, {"Имя", введите текст}, {"Доступно", введите логический}}),
     PreviousRow = Table.FromColumns (Table.ToColumns(typx)&{{false}&List.RemoveLastN(typx[Available],1)}),
     Check = Table.AddColumn(PreviousRow, "Custom", каждый, если [Column3] =true и [Column4] =false, то [Column1] иначе null),
     FilledDown = Table.FillDown(Проверить,{"Пользовательский"}),
     RemovedCol = Table.RemoveColumns(FilledDown,{"Column4"}),
     RenamedCol = Table.RenameColumns(RemovedCol,{{"Пользовательский", "FDate"}, {"Столбец3", "Доступно"}, {"Столбец2", "Имя"}, {"Столбец1", "Дата"}}) ,
     Day = Table.AddColumn(RenamedCol, "Day", каждый, если [Available] = true, то 1, иначе 0),
     #"Измененный тип" = Table.TransformColumnTypes(Day,{{"Day", type number}, {"FDate", type date}})
 в
    #"Измененный тип" 

Доступные дни = ЕСЛИ(СУММ(таблица[День])>0,СУММ(таблица[День])) 

Archivo PBIX de muestra adjunto
https://dropmefiles.com/o27fR

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

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