如果关系可能不存在,DAX 计算行数
DAX Measure to count Rows if relation may not exist
我正在寻找 DAX 度量来解决以下问题:
计算维度 table 中事实 table 没有行或得分为 0 的行数。
Table A(维度Table)
ID
name
1
a
2
b
3
c
TableB(事实Table)
ID
score
1
0
1
1
1
2
2
5
预期结果
在这个例子中,我期望 2,因为 ID=1 有一行 score=0 和 ID=3 作为事实 Table.
中没有对应的行
我想出了这个度量,它给出了在事实 table 中没有对应行的行数,但我无法整合第一个条件:
CALCULATE(COUNTROWS('Dimension'), FILTER ('Dimension', ISBLANK ( CALCULATE ( COUNT ('Fact'[id]) ) )))
可能是更直接的方法,但现在试试这个测量:
MyMeasure =
VAR MyTable =
ADDCOLUMNS(
Table_A,
"Not in Table_B", NOT (
Table_A[ID]
IN DISTINCT( Table_B[ID] )
),
"Zero Score in Table_B",
CALCULATE(
COUNTROWS( Table_B ),
Table_B[score] = 0
) > 0
)
RETURN
SUMX(
MyTable,
[Not in Table_B] + [Zero Score in Table_B]
)
你也可以试试这个
CountID =
VAR ScoreZero =
COUNTROWS ( FILTER ( TableB, [score] = 0 ) )
VAR NonExistentIDs =
COUNTROWS ( EXCEPT ( DISTINCT ( TableA[ID] ), DISTINCT ( TableB[ID] ) ) )
RETURN
ScoreZero + NonExistentIDs
这也行,不确定嵌套是个好主意CALCULATE
:
CALCULATE(COUNTROWS('Table_A'), FILTER ('Table_A', ISBLANK ( CALCULATE ( COUNT ('Table_B '[id]) ) ) || CALCULATE(COUNTAX(Filter('Table_B ','Table_B '[score]=0),'Table_B '[id])>=1)))
我正在寻找 DAX 度量来解决以下问题: 计算维度 table 中事实 table 没有行或得分为 0 的行数。
Table A(维度Table)
ID | name |
---|---|
1 | a |
2 | b |
3 | c |
TableB(事实Table)
ID | score |
---|---|
1 | 0 |
1 | 1 |
1 | 2 |
2 | 5 |
预期结果 在这个例子中,我期望 2,因为 ID=1 有一行 score=0 和 ID=3 作为事实 Table.
中没有对应的行我想出了这个度量,它给出了在事实 table 中没有对应行的行数,但我无法整合第一个条件:
CALCULATE(COUNTROWS('Dimension'), FILTER ('Dimension', ISBLANK ( CALCULATE ( COUNT ('Fact'[id]) ) )))
可能是更直接的方法,但现在试试这个测量:
MyMeasure =
VAR MyTable =
ADDCOLUMNS(
Table_A,
"Not in Table_B", NOT (
Table_A[ID]
IN DISTINCT( Table_B[ID] )
),
"Zero Score in Table_B",
CALCULATE(
COUNTROWS( Table_B ),
Table_B[score] = 0
) > 0
)
RETURN
SUMX(
MyTable,
[Not in Table_B] + [Zero Score in Table_B]
)
你也可以试试这个
CountID =
VAR ScoreZero =
COUNTROWS ( FILTER ( TableB, [score] = 0 ) )
VAR NonExistentIDs =
COUNTROWS ( EXCEPT ( DISTINCT ( TableA[ID] ), DISTINCT ( TableB[ID] ) ) )
RETURN
ScoreZero + NonExistentIDs
这也行,不确定嵌套是个好主意CALCULATE
:
CALCULATE(COUNTROWS('Table_A'), FILTER ('Table_A', ISBLANK ( CALCULATE ( COUNT ('Table_B '[id]) ) ) || CALCULATE(COUNTAX(Filter('Table_B ','Table_B '[score]=0),'Table_B '[id])>=1)))