繁体   English   中英

根据进出时间员工出勤率计算“工作时间”

[英]Calculate “Working hours ” based on IN and OUT time Employee Attendance Power bi

我正在使用 Power bi,我想根据员工进出公司的时间来计算他们的工作时间。 这是一个数据样本属性表 假定的总小时数应为 7 小时 8 分钟。 所以,员工出去什么都不做的时间。 就我而言,我应该排除从 OUT 2:04:20 到 IN 3:09:46 大约 1 小时的时间。

您可以计算每个in下一个out并取其差:

select t.employee_id,
       sum(datediff(second, local_time, next_local_time)) as diff_seconds
from (select t.*,
             lead(local_time) over (partition by employee_id order by local_time) as next_local_time
     from t
    ) t
where action = 'IN'
group by t.employee_id;

注意:这假设INOUT是交错的,因此一行中没有具有相同操作的行。

这也以秒为单位给出结果 - 可以转换为十进制小时数或您想要的任何其他特定格式。

在 Power BI/Power Query 中,假设您的表与您的帖子具有相同的结构,您可以使用以下脚本创建一个新表。 在此脚本yourSource是对您的表的引用。

let
    #"Sorted Rows" = Table.Sort(yourSource,{{"EmployeeID", Order.Ascending}, {"LOCAL_TIME", Order.Ascending}}),
    #"Added Index" = Table.AddIndexColumn(#"Sorted Rows", "Index", 1, 1, Int64.Type),
    #"Added Custom1" = Table.AddColumn(#"Added Index", "Employee_In_Out_Index", each if [Action] = "IN" then [Index] else null),
    #"Filled Down" = Table.FillDown(#"Added Custom1",{"Employee_In_Out_Index"}),
    #"Removed Columns" = Table.RemoveColumns(#"Filled Down",{"Index"}),
    #"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"Employee_In_Out_Index", "EmployeeID", "Action", "LOCAL_TIME"}),
    #"Pivoted Column" = Table.Pivot(#"Reordered Columns", List.Distinct(#"Reordered Columns"[Action]), "Action", "LOCAL_TIME"),
    #"Added Custom" = Table.AddColumn(#"Pivoted Column", "Time Difference", each [OUT] - [IN])
in
    #"Added Custom"

在新表中,每条记录用于一个输入输出。 这里有一个Time Difference列,您可以在计算中使用它。

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM