DAX或Excel查询

时间:2016-03-30 03:31:08

标签: excel dax

如何在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-DateEnd-DATE之间的差异为4天。 所以我想将小时数除以Start-DateEnd-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查询中执行此操作!

1 个答案:

答案 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  

我希望这会有所帮助 Ĵ