【问题标题】:How to show running totals of time defined by an interval and time per instance如何显示由每个实例的间隔和时间定义的运行总时间
【发布时间】:2020-02-10 14:37:31
【问题描述】:

我有一个表,它定义了何时执行对客户端的服务的时间间隔。还定义了每次执行服务时的分配持续时间。

像这样:

上表是将为某些客户端执行的服务示例。

对于 ClientId:1,信息应为:

客户端 1 已命令 ServiceType:100 每隔 1.5 小时执行一次 第三天,从 2020 年 1 月 1 日开始,直至另行通知。

对于客户:4,信息应理解为:

客户端 4 已下令 ServiceType:200 每隔 4 小时执行一次 第 4 天,从 2020 年 1 月 2 日开始,直至另行通知。

我的老板现在要我制作一张图表,按日期显示任何服务所花费的总小时数。

2020-01-01 和 2020-01-31 之间的日期范围应创建以下要显示的理论数据集:

(我只需要显示日期和总时间,其他列可以忽略)

然后将上面的数据显示在图表中,如下所示:

我的问题是如何创建一个可以计算总时间的度量,给定报告中当前选择的日期过滤器,并且可以用来创建上面的图表。

非常感谢任何帮助!

亲切的问候, 彼得

【问题讨论】:

    标签: powerbi dax m


    【解决方案1】:

    您可以使用 M (Power Query) 来实现这一点,我的解决方案不会像“IntervalType”那样管理您要求的所有细节,但允许您在输入标准化后获得所需的行。

    下面的 M 脚本将满足以下要求(您可以使用高级编辑器查看完整的脚本):

    • 所有行和使用的指标共享相同的度量单位,即:天
    {here you have already loaded your table}
    /*Calculate the difference between the 2 dates in days*/
    /*note that if the end date is 9999-12-31 you may want to set an upper limit*/
    #"Added Custom" = Table.AddColumn(#"Changed Type", "DaysInterval", each Duration.Days([EndDate]- [StartDate])),
    
    /*Calculate how many times the service will be performed in the calculated interval*/
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "IntervalOccurence", each Number.RoundDown([DaysInterval]/[Interval])),
    
    /*Use what has been calculated so far to create a list of dates for each row*/
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "ListDates", each List.Dates([StartDate],[IntervalOccurence],#duration([Interval], 0, 0, 0))),
    
    /*Expand the list to rows (using the UI click on the arrows in the column header)*/
    #"Expanded ListDates" = Table.ExpandListColumn(#"Added Custom2", "ListDates")
    

    之后,您只需删除不需要的列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-16
      • 2020-12-17
      • 1970-01-01
      • 2017-05-01
      相关资源
      最近更新 更多