在 Power BI 中比较两个值并计算结果的度量

a measures for comparing two values and counting the result in Power BI

我如何编写一个度量来计算 sum(x1) 等于 count(order_id)[ 的用户 ID 的数量=28=],在 Power BI 中?

比如我的数据table是:

userID x1 order_id
141 1 719
172 0 616
172 0 189
172 0 2211
172 0 317
1103 1 98
1103 1 213
1103 1 15
2524 0 4902
2524 1 3620

为此我使用 table power bi 视觉效果来解释我的意思:

userID sum(x1) count(order_id)
141 1 1
172 0 4
1103 3 3
2524 1 2

请注意,userID 列是我的数据 table 中的列之一,并且此示例中的 sum(x1) 和 count(order_id) 是通过 Power BI 默认功能计算的。

这个样本的结果应该是 2。我需要一个度量 returns 2.

您的新措施可能如下所示:

calculate( countrows('YourTabel'), FILTER(ALL('YourTabel'), somestatementIfneeded && var __x1 = [x1] var __x2 = [x2] return __x1 = __x2))

主要部分是使用变量PLACEHOLDER;

Measure1 = 
VAR _base1 =
    SUMMARIZE ( 'Table 1', 'Table 1'[userID] )
VAR _base2 =
    ALLEXCEPT ( 'Table 1', 'Table 1'[userID] )
VAR _ct =
    ADDCOLUMNS ( _base1, "X", CALCULATE ( COUNT ( 'Table 1'[order_id] ), _base2 ) )
VAR _sum =
    ADDCOLUMNS ( _base1, "X", CALCULATE ( SUM ( 'Table 1'[x1] ), _base2 ) )
VAR _nt =
    NATURALINNERJOIN ( _sum, _ct )
RETURN
    COUNTROWS ( _nt )

Measure4 =
VAR _1 =
    COUNTX (
        VALUES ( 'Table 1'[userID] ),
        VAR _base =
            ALLEXCEPT ( 'Table 1', 'Table 1'[userID] )
        VAR _1 =
            CALCULATE ( SUM ( 'Table 1'[x1] ), _base )
        VAR _2 =
            CALCULATE ( COUNTROWS ( 'Table 1' ), _base )
        VAR _3 =
            IF ( _1 = _2, 1 )
        RETURN
            _3
    )
RETURN
    _1

这应该有效

count_valid_rows =
VAR sum_x1_table =
    SUMMARIZECOLUMNS ( 'table'[userID], 'table', "sumx1", SUM ( 'table'[x1] ) )
VAR count_orderId_table =
    SUMMARIZECOLUMNS (
        'table'[userID],
        'table',
        "countOfOrders", COUNT ( 'table'[x1] )
    )
RETURN
    COUNTROWS (
        FILTER (
            NATURALINNERJOIN ( sum_x1_table, count_orderId_table ),
            [sumx1] = [countOfOrders]
        )
    )

所用函数的文档。

NATURALINNERJOIN SUMMARIZECOLUMNS

另一个建议:

Count := 
SUMX (
    SUMMARIZECOLUMNS (
        'Table'[userID] , 
        "Sum" , SUM ( 'Table'[x1] ),
        "Count" , COUNT ( 'Table'[order_id] )
    ),
    IF ( [Sum] = [Count] , 1 )
)

正如您从其他答案中看到的那样,有很多方法可以计算它。我建议您查看所有建议以了解每个建议的含义,然后写出您处理此类问题的首选方式。