【问题标题】:PowerBi timeseries durationPower Bi 时间序列持续时间
【发布时间】:2018-11-16 14:21:30
【问题描述】:

在 PowerBI 中,我有一个包含 3 列的简单表格:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("TYzBCcAwDAN38dugyk5bdxaT/deICzXN77hDyhSKCkHYwafwbJyaYiUc9I4XaH/1MgHeXQO+bcf7ux0XW3x5Lg==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [id = _t, start = _t, end = _t]),
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"id", Int64.Type}, {"start", type date}, {"end", type date}})
in
    #"Changed Type"

我可以从中创建以下视觉效果

我的挑战是根据上面选择的过滤器计算时间序列的总持续时间(以天为单位)。任何帮助将不胜感激。

我尝试了以下 DAX 公式,但它给了我如上所示的疯狂结果。

YTDDuration = 
var start_Date=FIRSTDATE(ALLSELECTED('CALENDAR'[Date]))
var end_Date=LASTDATE(ALLSELECTED('CALENDAR'[Date]))
var current_Start=MAX(Table2[start])
var current_end=MAX(Table2[end])
var bigif=IF(current_end>start_Date&&current_Start<end_Date,DATEDIFF(MAX(start_Date,current_Start),MIN(end_Date,current_end),DAY),0)
RETURN
CALCULATE(SUMX(Table2, bigif),FILTER(ALL(Table2), Table2[start] <= max(Table2[end])))

预期输出为:

这里的关键是考虑日期的差距并合并重叠的日期。

【问题讨论】:

  • 您期待什么结果?我不确定我是否理解您的条形图应该显示的内容。
  • 理想情况下,按 end_date 的累计持续时间或按日期的总持续时间都可以。谢谢
  • 你能解释一下你的意思吗?例如。您预计 5 月的价值是多少?为什么?
  • 我已经添加了预期的输出,这里的关键是第一个日期和结束日期之间的天差,考虑到日期的差距。

标签: powerbi dax


【解决方案1】:

您可以遍历日历表并计算当天属于id 时间段之一的天数。

YTDDuration = 
var current_Start = CALCULATE(MIN(Table2[start]), ALL(Table2))
var current_end = MAX(Table2[end])
RETURN
    SUMX(
        FILTER('CALENDAR', 'CALENDAR'[Date] <= current_end),
        MAXX(ALL(Table2), IF([Date] > [start] && [Date] <= [end], 1, 0))
    )

这从最小的start 日期开始,并且对于Date 介于startend 之间的每一天添加1,对于Table2 中的某些行。如果没有任何行包含 Date,则最大值仅超过零并返回零。如果有一个或多个匹配,您最多可以得到一个,我们会计算当天。


YTD Durationend:

【讨论】:

  • 它适用于整个系列,当我过滤到特定记录时会出现问题,然后持续时间从 id 1 开始。:(
  • 将第一行的ALL(Table2)改为ALLSELECTED(Table2)
  • 同时更改 ALL(Table2) -> ALLSELECTED(Table2) 就可以了。谢谢你的帮助!!
  • @AlexisOlson 你的书什么时候出版?
  • @StelioK 这是一本很长的书。请务必至少通读第 4 章和第 5 章。这些是关键。
猜你喜欢
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多