如何在DAX中编写查询,如果我有这样的数据,那里有startdate和end date以及总工作时间,我需要为每天分配工作时间值。
所以我想要的是当开始日期和结束日期与那些日期之间的小时分数不同时。
例如 -
User Start-Date End-DATE Hour
Dan 2015-02-05 2015-02-08 32
此处Start-Date
为05日元,End-DATE
为2015-02-08,Hour
为32
Start-Date
和End-DATE
之间的差异为4天。
所以我想将小时数除以Start-Date
和End-DATE
的差异,并在每天分配这些值
所以预期的输出将是---
User Date Hour Dan 2015-02-05 8 Dan 2015-02-06 8 Dan 2015-02-07 8 Dan 2015-02-08 8
我有什么
User Start-Date End-DATE Hour
Dan 2015-02-05 2015-02-08 32
Dan 2015-02-09 2015-02-09 6
Dan 2015-02-10 2015-02-11 3
Dan 2015-02-11 2015-02-12 8
预期结果 -
User Date Hour Dan 2015-02-05 8 Dan 2015-02-06 8 Dan 2015-02-07 8 Dan 2015-02-08 8 Dan 2015-02-09 6 Dan 2015-02-10 3 Dan 2015-02-11 8
任何人都知道如何在DAX或excel查询中执行此操作!
答案 0 :(得分:0)
所以在我开始之前,我已经使用Power Bi这个解决方案,这是一个供个人使用的免费工具,但是有一些许可选项可用。基本上前提是相同的,但是有一个Power Query元素和一些DAX一起使用。无论如何,这是我的步骤:
在我做出任何更改之前,这是我的表
User Start End Hour
UserA 01/01/2018 05/01/2018 32
创建自定义列以计算[开始]和[结束]
之间的日期数Dates = { Number.From([Start]..Number.From([End]) }
创建另一个自定义列以计算[小时]的数量除以列表项的数量。在此步骤之前不要展开列表!
CountPerDay = [Hour] / List.Count([Dates])
最后展开您的列表列,以显示每天所需的小时数。请注意日期是如何以数字格式。将列数据类型更改为“Date”或“DateTime”会将这些更改回正确的值。
使用我的示例,您现在应该有一个类似于下面的表格:
User Start End Hour Dates CountPerDay
UserA 01/01/2018 05/01/2018 32 01/01/2018 6.4
UserA 01/01/2018 05/01/2018 32 02/01/2018 6.4
UserA 01/01/2018 05/01/2018 32 03/01/2018 6.4
UserA 01/01/2018 05/01/2018 32 04/01/2018 6.4
UserA 01/01/2018 05/01/2018 32 05/01/2018 6.4
如果我将UserB添加到具有以下记录的混合中:
User Start End Hour
UserB 01/02/2018 02/02/2018 10
表格更新如下:
User Start End Hour Dates CountPerDay
UserA 01/01/2018 05/01/2018 32 01/01/2018 6.4
UserA 01/01/2018 05/01/2018 32 02/01/2018 6.4
UserA 01/01/2018 05/01/2018 32 03/01/2018 6.4
UserA 01/01/2018 05/01/2018 32 04/01/2018 6.4
UserA 01/01/2018 05/01/2018 32 05/01/2018 6.4
UserB 01/02/2018 02/02/2018 10 01/02/2018 5
UserB 01/02/2018 02/02/2018 10 02/02/2018 5
我希望这会有所帮助 Ĵ