【问题标题】:Power BI filter out data based on previous business dayPower BI 根据前一个工作日过滤掉数据
【发布时间】:2017-10-04 17:32:04
【问题描述】:

我有一列 ReceiptDateTime,其中包含收到的日期和时间。我想过滤并仅使用前一个工作日(周一至周五)的数据。例如,在星期一,我只想查看星期五的数据。我正在尝试在 Power BI 中实现这一目标。

这可能吗?非常感谢您的帮助。

【问题讨论】:

  • 有可能。请展示您的尝试?
  • 我试图在查询本身中添加过滤器,但无法弄清楚。您是否建议改为计算字段?
  • 创建一个计算列isyesterday,确定该行的日期值是否是前一个工作日,如果是则返回1,否则返回0。然后您可以通过isyesterday = 1 进行过滤。 (您将需要函数:todaydateaddweekday
  • 如果查询开始变长,请确保使用换行符(shift+enter)和变量:sqlbi.com/articles/variables-in-dax

标签: powerbi


【解决方案1】:

如果我将此表作为 Table1 加载到 Power BI 开始:

然后,我使用此代码添加一个新列(建模 -> 新列)...ReceiptDateOnly = DATE(YEAR([ReceiptDateTime]),MONTH([ReceiptDateTime]),DAY([ReceiptDateTime]))...以从 ReceiptDateTime 列中获取日期。 (您曾表示您有日期/时间组合,我们只需要日期即可。)

然后我使用此代码创建一个新表(建模 -> 新表)...`Table2 = GROUPBY(Table1,Table1[ReceiptDateOnly],"SomeData",sumx(CURRENTGROUP(),Table1[SomeData])) .

然后我用这段代码添加一个新列...

PreviousWorkday = if(WEEKDAY('Table2'[Table1_ReceiptDateOnly])=2, DATEADD('Table2'[Table1_ReceiptDateOnly],-3,DAY), if(WEEKDAY('Table2'[Table1_ReceiptDateOnly])=1, DATEADD('Table2'[Table1_ReceiptDateOnly],-2,DAY), DATEADD('Table2'[Table1_ReceiptDateOnly],-1,DAY)) )

...确定上一个工作日。

然后我用这段代码添加另一列...

PreviousWorkDaySomeData = SUMX(FILTER('Table2','Table2'[Table1_ReceiptDateOnly]=EARLIER('Table2'[PreviousWorkday])),'Table2'[SomeData])

...获取与上一个工作日相关的数据。

我得到一张这样的表:

星期一使用星期五的数据。周二使用周一的数据。周三使用周二的数据。周四使用周三的数据。周五使用周四的数据。星期六使用星期五的数据。周日使用周五的数据。

【讨论】:

    猜你喜欢
    • 2020-05-10
    • 2022-11-04
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    • 2023-02-11
    • 1970-01-01
    相关资源
    最近更新 更多