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.
¡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:
Fecha | Nombre | Disponible |
1/1/2023 | Barney | VERDADERO |
1/2/2023 | Barney | VERDADERO |
1/3/2023 | Barney | FALSO |
1/4/2023 | Barney | FALSO |
1/5/2023 | Barney | FALSO |
1/6/2023 | Barney | VERDADERO |
1/7/2023 | Barney | VERDADERO |
1/8/2023 | Barney | FALSO |
1/9/2023 | Barney | VERDADERO |
1/10/2023 | Barney | VERDADERO |
1/11/2023 | Barney | FALSO |
1/12/2023 | Barney | FALSO |
1/13/2023 | Barney | FALSO |
1/14/2023 | Barney | FALSO |
1/1/2023 | Fred | FALSO |
1/2/2023 | Fred | FALSO |
1/3/2023 | Fred | FALSO |
1/4/2023 | Fred | VERDADERO |
1/5/2023 | Fred | VERDADERO |
1/6/2023 | Fred | VERDADERO |
1/7/2023 | Fred | VERDADERO |
1/8/2023 | Fred | VERDADERO |
1/9/2023 | Fred | FALSO |
1/10/2023 | Fred | FALSO |
1/11/2023 | Fred | FALSO |
1/12/2023 | Fred | VERDADERO |
1/13/2023 | Fred | VERDADERO |
1/14/2023 | Fred | VERDADERO |
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í:
Nombre | Fecha de disponibilidad | Días disponibles |
Barney | 1/1/2023 | 2 |
Barney | 1/6/2023 | 2 |
Barney | 1/9/2023 | 2 |
Fred | 1/4/2023 | 5 |
Fred | 1/12/2023 | 3 |
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!
¡¡Muchas gracias!!
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
¿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
Hola
Por favor, compruebe la imagen de abajo y el archivo pbix adjunto.
Es para crear una nueva tabla.
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]
)
¿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
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
1 | |
1 |