日期范围内按月计算的天数

问题描述 投票:0回答:1

员工休假需要 PowerBI 报告。日期仅按范围排列,即休假开始日期和结束日期。当日期范围跨月时,我无法确定每个月有多少天。理想情况下我只会看工作日而不是周末

如何报告每月休假的天数,即将日期范围分为几个月?

我想我需要将行扩展到单日,然后求和

身份证工作人员 离开 类型 开始日期 结束日期 拍摄天数
1000675 年度 离开 27/12/24 17/01/25 16.00
2302135 年度 离开 23/12/24 10/01/25 13.00
2303149 年度 离开 27/12/24 8/01/25 9.00
1000812 年度 离开 20/12/24 7/01/25 11.00
1000275 年度 离开 24/12/24 6/01/25 6.00
1000769 年度 离开 23/12/24 3/01/25 8.00
2304494 年度 离开 23/12/24 3/01/25 8.00
1176278 年度 离开 16/12/24 3/01/25 13.00
1000379 年度 离开 24/12/24 1/01/25 5.00
1405149 年度 离开 23/12/24 1/01/25 6.00
1000477 年度 离开 9/12/24 1/01/25 15.00
1000081 年度 离开 31/12/24 31/12/24 0.45
1000517 年度 离开 30/12/24 31/12/24 2.00
1000662 年度 离开 30/12/24 31/12/24 2.00
2300641 年度 离开 27/12/24 31/12/24 3.00
1000594 年度 离开 27/12/24 31/12/24 3.00
1000757 年度 离开 27/12/24 31/12/24 3.00
1000755 年度 离开 27/12/24 31/12/24 3.00
powerbi-desktop
1个回答
0
投票

您可以将日期拆分为 PQ 中的行

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("ldM7DoMwDAbgu2RGxa/YMHbvDRADA1vF1p6/YWjiqka0Ex745N+JM00JAUAtpy5dt+2x3EtxW5fnWr5kPVJPUkq0HrCn/TfUC0CauykRAyHHlBuFRtlRRhlPug5Vjm+4xx2QQggVurToJR0MKlVqleqhaZy1jckVDm5IkVH+h4imZEMEUQPYznXPyhZnbUNilblCgXx0IRzAj9MRswiOgcPsYbnKCDK2IVsJF8lVZgxbMkSSfE/VcHtOZLlLUAnTuoX1wX3PfLAF59JyOOdP8uxRf8n5BQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"D Staff" = _t, Leave = _t, Type = _t, #"Start Date" = _t, #"End Date" = _t, #"Days Taken" = _t]),
    #"Changed Type with Locale" = Table.TransformColumnTypes(Source, {{"Start Date", type date}}, "en-AU"),
    #"Changed Type with Locale1" = Table.TransformColumnTypes(#"Changed Type with Locale", {{"End Date", type date}}, "en-AU"),
    #"Added Custom" = Table.AddColumn(#"Changed Type with Locale1", "Date", each {Number.From([Start Date])..Number.From([End Date])}),
    #"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Date"),
    #"Changed Type" = Table.TransformColumnTypes(#"Expanded Custom",{{"Date", type date}}),
    #"Added Custom1" = Table.AddColumn(#"Changed Type", "Custom.1", each Date.DayOfWeek([Date])),
    #"Filtered Rows" = Table.SelectRows(#"Added Custom1", each ([Custom.1] <> 5 and [Custom.1] <> 6))
in
    #"Filtered Rows"

enter image description here

然后使用DAX创建日期表

date =
ADDCOLUMNS (
    CALENDAR ( MIN ( 'Table'[Start Date] ), MAX ( 'Table'[End Date] ) ),
    "month", MONTH ( [Date] )
)

创建表之间的关系

然后你就可以得到每个月的休假天数

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.