【问题标题】:Is there a Power Bi Dax formula to show a result based on multiple conditions?是否有 Power Bi Dax 公式来显示基于多个条件的结果?
【发布时间】:2019-04-09 08:30:20
【问题描述】:

我有一个包含以下列的表格:

|       Feature       |       Date       |    Update | hours|
|---------------------|------------------|-----------|------|
|General              |2018-10-02        |V1         |0     |
|General              |2018-10-02        |V1         |0     |
|General              |2018-10-02        |V1         |0     |
|General              |2018-10-02        |V1         |0     |
|General              |2018-10-02        |V1         |0     |
|PvP                  |2018-10-02        |V1         |3     |
|PvP                  |2018-10-02        |V1         |2     |
|PvP                  |2018-10-02        |V1         |1     |
|PvP                  |2018-10-02        |V1         |1     |
|General              |2018-10-02        |V1         |0     |
|General              |2018-10-02        |V1         |7     |
|General              |2018-10-02        |V1         |0     |
|General              |2018-10-02        |V1         |0     |
|Visual               |2018-10-02        |V1         |7     |
|General              |2018-10-15        |V1         |0     |
|General              |2018-10-15        |V1         |0     |
|General              |2018-10-15        |V1         |0     |
|Visual               |2018-10-15        |V1         |7     |
|Visual               |2018-10-15        |V1         |2     |
|General              |2018-10-16        |V1         |1     |

使用此示例,我想添加一个自定义列,该列可以根据以下条件计算每个功能执行的运行次数:

根据每天的特征计算分钟总和,并且: 例如,如果今天的总和高于昨天的总和,则计为 1 次,否则计为 0。

下面是一个例子

|       Feature       |       Date       |    Update | hours|No of runs|
|---------------------|------------------|-----------|------|----------|
|General              |2018-10-02        |V1         |0     |1
|General              |2018-10-02        |V1         |0     |1
|General              |2018-10-02        |V1         |0     |1
|General              |2018-10-02        |V1         |0     |1
|General              |2018-10-02        |V1         |0     |1
|PvP                  |2018-10-02        |V1         |3     |1
|PvP                  |2018-10-02        |V1         |2     |1
|PvP                  |2018-10-02        |V1         |1     |1
|PvP                  |2018-10-02        |V1         |1     |1
|General              |2018-10-02        |V1         |0     |1
|General              |2018-10-02        |V1         |7     |1
|General              |2018-10-02        |V1         |0     |1
|General              |2018-10-02        |V1         |0     |1
|Visual               |2018-10-02        |V1         |7     |1
|General              |2018-10-15        |V1         |0     |0
|General              |2018-10-15        |V1         |0     |0
|General              |2018-10-15        |V1         |0     |0
|Visual               |2018-10-15        |V1         |7     |1
|Visual               |2018-10-15        |V1         |2     |1
|General              |2018-10-16        |V1         |1     |1

每个功能的运行计数器应该从 1 开始。

到目前为止,我已尝试使用以下公式,但它给出的信息不正确:

No_of_runs = CALCULATE(COUNTA('table'[Feature]),Filter('Table','Table'[Feature]=EARLIER('Table'[Feature]) && 'Table'[Date] > EARLIER(' Table'[Date] && 'Table'[Time Invested(hours)] > 较早('Table'[Time Invested(hours)])))

【问题讨论】:

  • 一方面,您在 "EARLIER('Table'[Date] " 之后缺少右括号

标签: powerbi dax multiple-conditions


【解决方案1】:

不确定我是否完全理解了其中的逻辑,但请尝试将此作为计算列:

No_of_runs = 
VAR DateToday = 
    Table1[Date]
VAR MinutesToday = 
    CALCULATE ( 
        SUM ( Table1[Time Invested (hours)] ),
        FILTER ( 
            ALLEXCEPT ( Table1, Table1[Feature] ),
            Table1[Date] = DateToday
        )
    )
VAR MinutesYesterday = 
    CALCULATE ( 
        SUM ( Table1[Time Invested (hours)] ),
        FILTER ( 
            ALLEXCEPT ( Table1, Table1[Feature] ),
            Table1[Date] = DateToday - 1
        )
    )
RETURN 
    IF ( 
        MinutesToday > MinutesYesterday,
        1,
        0
    )

编辑:这是一个工作示例 PBIX 文件; https://pwrbi.com/so_55588315/

【讨论】:

  • 以上公式显示整个列的运行次数为 0。我的主要目标基本上是将每次添加都算作每个功能每天的新运行。因此,例如,如果 2 天前我记录了功能 x 10 小时,而昨天我又添加了半小时,那么这算作一次新的运行,如果今天我不会为该功能添加任何时间,那么运行计数器应该今天显示零。我希望这是有道理的
  • 这对我来说没有意义。对于您的示例数据,我的回答给出了您的预期结果。您能否请edit您的问题显示一些更清晰的样本数据 - 输入和预期输出的清晰样本。
  • 我添加了一小部分数据
  • 基本上逻辑是这样的: 1. 根据特征比较两个日期之间的小时总和。 2.如果最近日期的值大于上一个日期,则计为1,否则计为零。
  • 我的回答不正是这样吗?
猜你喜欢
  • 2022-08-13
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 2020-05-07
  • 2020-11-09
  • 2021-02-15
  • 2023-01-04
  • 1970-01-01
相关资源
最近更新 更多