Power BI-使用条件对分组值进行计数

时间:2020-01-22 16:13:35

标签: powerbi dax

我是Power BI的新手,正在努力解决以下问题。在excel中,我会使用COUNTIF。我有一张桌子:

+-----+----------+
| ID  | Status   |
+-----+----------+
| 1   | Complete |
+-----+----------+
| 2   | Started  |
+-----+----------+
| 3   | Started  |
+-----+----------+
| 1   | Complete |
+-----+----------+
| 1   | Complete |
+-----+----------+

我想总结一下数据并计算complete(按ID分组的作业数)。我想要的输出是:

+-----+----------+-------+
|  ID | Status   | Count |
+-----+----------+-------+
| 1   | Complete | 3     |
+-----+----------+-------+
| 2   | Started  | 1     |
+-----+----------+-------+
| 3   | Started  | 1     |
+-----+----------+-------+
| 1   | Complete | 3     |
+-----+----------+-------+
| 1   | Complete | 3     |
+-----+----------+-------+

那么我想只保留计数大于2的不同值(如果没有上面的中间步骤,这可能吗?)。所以我最终想要的结果是:

+-----+----------+-------+
| ID  | Status   | Count |
+-----+----------+-------+
| 1   | Complete | 3     |
+-----+----------+-------+

我尝试过:

 Unique =  COUNTAX(FILTER(Sheet1,(Sheet1[Status] = "Complete" && (Sheet1[Status] = EARLIER(Sheet1[Status])))),Sheet1[Status])

但这给了我一个连续的总数,而不是总数。

我需要使用什么公式?

谢谢

2 个答案:

答案 0 :(得分:0)

如果您有一个以IDStatus为列的可视表,则可以编写一个简单的度量Count,如下所示:

Count =
VAR Complete =
    CALCULATE (
        COUNT ( Sheet1[ID] ),
        FILTER ( Sheet1, Sheet1[Status] = "Complete" )
    )
RETURN
    IF ( Complete >= 2, Complete ) /*False returns BLANK()*/

答案 1 :(得分:0)

您正在寻找每个ID的记录数,状态为完成。可以使用ALLEXCEPT来实现。以下计算将为您提供ID级的需求计数:

Count = CALCULATE(COUNT(Sheet1[ID]),ALLEXCEPT(Sheet1,Sheet1[ID]),Sheet1[Status]="Complete")

创建字段后,您可以在列中应用过滤器以获取所需的内容。