如果关系可能不存在,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)))