在 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]
)
)
所用函数的文档。
另一个建议:
Count :=
SUMX (
SUMMARIZECOLUMNS (
'Table'[userID] ,
"Sum" , SUM ( 'Table'[x1] ),
"Count" , COUNT ( 'Table'[order_id] )
),
IF ( [Sum] = [Count] , 1 )
)
正如您从其他答案中看到的那样,有很多方法可以计算它。我建议您查看所有建议以了解每个建议的含义,然后写出您处理此类问题的首选方式。
我如何编写一个度量来计算 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]
)
)
所用函数的文档。
另一个建议:
Count :=
SUMX (
SUMMARIZECOLUMNS (
'Table'[userID] ,
"Sum" , SUM ( 'Table'[x1] ),
"Count" , COUNT ( 'Table'[order_id] )
),
IF ( [Sum] = [Count] , 1 )
)
正如您从其他答案中看到的那样,有很多方法可以计算它。我建议您查看所有建议以了解每个建议的含义,然后写出您处理此类问题的首选方式。