Power BI-最长日期或所选日期的最近日期

时间:2018-11-14 05:20:22

标签: powerbi

对象:在给定日期之前求和最近日期的值

这是我的数据

LastDateModifiedBy

我创建一个名为“ DateList”的表,并使用切片器选择指定的日期

DateList Slicer

我想要达到以下结果:

await TryUpdateModelAsync<Host>(
                    hostToUpdate,
                    "Host",
                    s => s.Name, s => s.Description, s => s.Address, s => s.Postcode, s => s.Suburb, 
                    s => s.State)

目前,我尝试使用这些步骤来达到上述效果。

首先,我想使用新的度量从表'MyData'中找到最接近的日期

var mario = document.createElement("img");
mario.src = "assets/images/Mario.jpg";

第二,如果[tradedate]等于“ MyMaxDate”,我将创建一个新的度量“ MySum”以求和。

Table: MyData
+-------------------------------+
| ID     TradeDate        Value |
+-------------------------------+
| 1       2018/11/30      105   |
| 1       2018/11/8       101   |
| 1       2018/10/31      100   |
| 1       2018/9/30       100   |
| 2       2018/11/30      200   |
| 2       2018/10/31      201   |
| 2       2018/9/30       205   |
| 3       2018/11/30      300   |
| 3       2018/10/31      305   |
| 3       2018/9/30       301   |
+-------------------------------+

第三,我创建一个矩阵来显示结果(请参见Result

不幸的是,结果1313与我的目标607不同 因此,如何解决DAX公式以获得正确的结果?

非常感谢

1 个答案:

答案 0 :(得分:0)

您可以通过在日期差中减去一个分钟,然后在具有最小差的最小日期中计算出最接近的日期。

MyDate = 
VAR SlicerDate = MIN(DateList[Date])
VAR MinDiff =
    MINX(
        FILTER(ALL(MyData),
            MyData[ID] IN VALUES(MyData[ID])
        ),
        ABS(SlicerDate - MyData[TradeDate]))
RETURN
    MINX(
        FILTER(ALL(MyData),
            MyData[ID] IN VALUES(MyData[ID])
            && ABS(SlicerDate - MyData[TradeDate]) = MinDiff
        ),
        MyData[TradeDate])

从那里,您可以轻松地创建求和度量:

MySum = CALCULATE(SUM(MyData[Value]), FILTER(MyData, MyData[TradeDate] = [MyDate]))

Result