DAX - 根据事实表中的最新数据运行日期在日期维度表中创建滚动的“过去 7 天内”TRUE/FALSE 列

Posted

技术标签:

【中文标题】DAX - 根据事实表中的最新数据运行日期在日期维度表中创建滚动的“过去 7 天内”TRUE/FALSE 列【英文标题】:DAX - Creating a rolling "within last 7 days" TRUE/FALSE column in Date Dimension table based on latest data run date in Fact table 【发布时间】:2022-01-22 06:55:39 【问题描述】:

我知道这应该很简单,但无法弄清楚。我想在我的数据维度表中的 Power BI 中创建一个滚动的“过去 7 天内”TRUE/FALSE 列,以允许我将其用作其他计算的过滤器 - 这将基于我的最新数据运行日期事实表(可以延迟到每天下午运行,因此我不只是简单地使用TODAY() 函数)。

我在创建列时尝试使用DATEDIFF 函数,当我在我的事实表中测试它时效果很好(因为最大运行日期是表中的最后运行日期)。但是,当引用我的日期维度表时,它为我提供了“最新运行日期”之前最多 7 天的所有内容的 TRUE 值,而且还为我提供了最新运行日期之后的每个日期。我的日期维度表包含未来 5 年的日期,因此这是一个问题。

Rolling 7 Days = if (DATEDIFF('Fact Table'[Date], MAX('Fact Table'[Date]), DAY) <= 7, TRUE(), FALSE())

我如何重新编写它,以便它仅在最新数据运行日期后的最后 7 天内明确给出 TRUE 结果,以便我可以将其用作过滤器?

这甚至可以写成衡量标准吗?

提前致谢!

【问题讨论】:

【参考方案1】:

尝试使用两个条件而不是一个条件。

例如,

Rolling 7 Days =
VAR MaxFactDate = MAX ( 'Fact Table'[Date] )
RETURN
    ( dimDate[Date] > MaxFactDate - 7 ) && ( dimDate[Date] <= MaxFactDate )

【讨论】:

优秀的@Alexis Olson!不知道 DAX 中的变量(尽管在 Python 中),所以这很有意义,知道真的很有用!感谢您的努力!

以上是关于DAX - 根据事实表中的最新数据运行日期在日期维度表中创建滚动的“过去 7 天内”TRUE/FALSE 列的主要内容,如果未能解决你的问题,请参考以下文章

处理数据集市/仓库中的时区

如何根据列中的最新日期聚合 pandas 数据框中的行?

cognos如何制作维表左关联事实表的报表

模型运行日期的 DateTime 或整数

从每组中的 3 个表中选择 sql 中具有最新日期的行

DAX-DATEADD疑惑