【问题标题】:Return date based on a condition in Power BI using DAX基于使用 DAX 的 Power BI 中的条件返回日期
【发布时间】:2021-02-15 18:19:35
【问题描述】:

希望你能帮助我。 我需要在 Power BI 中根据条件计算 today() 和某个日期之间的日期差。

我有一个日历表,其中包含与事实表 ASID 相关的日期 (calendario[fecha]) 以预测列 ASID[amount] 和一个给我线性回归的度量 [Estimado]

    Estimado = 
VAR Known =
    FILTER (
        SELECTCOLUMNS (
            ALLSELECTED ( 'calendario'[fecha] ),
            "Known[X]", calendario[fecha],
            "Known[Y]", [ASID]
        ),
        AND (
            NOT ( ISBLANK ( Known[X] ) ),
            NOT ( ISBLANK ( Known[Y] ) )
        )
    )
VAR Count_Items =
    COUNTROWS ( Known )
VAR Sum_X =
    SUMX ( Known, Known[X] )
VAR Sum_X2 =
    SUMX ( Known, Known[X] ^ 2 )
VAR Sum_Y =
    SUMX ( Known, Known[Y] )
VAR Sum_XY =
    SUMX ( Known, Known[X] * Known[Y] )
VAR Average_X =
    AVERAGEX ( Known, Known[X] )
VAR Average_Y =
    AVERAGEX ( Known, Known[Y] )
VAR Slope =
    DIVIDE (
        Count_Items * Sum_XY - Sum_X * Sum_Y,
        Count_Items * Sum_X2 - Sum_X ^ 2
    )
VAR Intercept =
    Average_Y - Slope * Average_X
RETURN
    ROUND(
        SUMX (
            DISTINCT ( calendario[fecha] ),
            Intercept + Slope * calendario[fecha]
    ),0)

我的可视化矩阵有 3 列:calendario[fecha]、实际值 [ASID] 和估计度量 [Estimado]。 我对该 ASID 的限制为 1105。 我可以看到,在未来的一天,假设从现在 03/12/2020 的一个月后,估计值达到 1105(在滚动所有矩阵之后),所以我需要一种方法来捕捉那一天并能够计算2020 年 3 月 12 日 - today() 并显示在某处:“还剩 30 天”

Raihan:我可以按照你的建议使用 datediff matrix 有没有办法只捕获 231 值?

DAX 现在是:if([Estimado]>1105, DATEDIFF(TODAY(),LASTDATE(calendario[fecha]),DAY),0)

【问题讨论】:

  • 要回答您更新的问题以捕获日期差异的单个值,请参阅我编辑的答案。

标签: powerbi dax


【解决方案1】:

由于您没有提供示例数据集,也没有说明您的测量公式,我只是自己考虑一个示例数据集来模拟您的问题。

考虑以下带有数据和计算列的屏幕截图。

如果“SomeValue”字段中的相应值达到某个数字,则 DaysFromToday 在这里计算每一列从今天到的天差。 SomeValue 也是计算字段,您可以将其替换为您自己的计算。

要从 DaysFromToday 中获取单个值,您可以使用一个度量值,该度量值将为您提供列值的 MAX 或 MIN(当然,如果需要,还有其他一些函数),如下面的屏幕截图 -

黄色突出显示的是 DAX 使用公式中缺少的表名称提及字段名称的方式。

最后可以在报告中显示 MAX 或 MIN 度量,如下所示 -

【讨论】:

  • 非常感谢 Raihan,好像是这样的。使用该示例,我只需要与 2021 年 9 月 20 日的差异。当我尝试将您的公式用于我的字段时,我无法在 DATEDIFF 中选择我的日历表。我正在尝试 IF[Estimado]>100, DATEDIFF(TODAY(), , DAY),0).
  • 我可以附上你的建议的矩阵截图!我只需要检索第一个差值
  • @gusch 我已经更新了回答您在评论中提到的问题的答案。
  • 你是一个天才的 Raihan……它工作得很好。我在 IF 中遇到了 0,因为使用 MINX 会返回第一个日期为 0。但我将其更改为 9999 并且它有效!!!!非常感谢你
【解决方案2】:

如果您能提供您想要的示例数据集和示例答案会更好。

【讨论】:

  • Thanx Su25,好像我不能上传图片,这样显示会更容易。我试图用更多细节重新描述这个问题
猜你喜欢
  • 1970-01-01
  • 2020-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多