DAX - 计算一个人拥有 "A" 的可能性百分比以及该人拥有 "B" 的机会

DAX - calculate the % likelihood of a person who has "A" with the chances the person has "B" as well

我有一个要求,我有两个像这样的列。

ID     Disease-Type
1       A
1       D
1       A
2       B
2       B
2       A
2       C
3       D
3       D

现在我想select疾病类型的疾病。让我们说 "A".

我想在图中看到这样,

B    100%
C    100%
D    50%

B 是 100%,因为如果该 id 患有疾病 B,则其也患有疾病 "A"(selected 疾病)。 C 是 100%,因为如果那个 id 患有疾病 C 那么也患有疾病 "A"(selected 疾病)。

而 D 仅占 50%,因为在具有 "D" 的 2 个唯一 ID (1, 3) 中,只有 1 个具有疾病类型 "A".

另请注意,A 不应出现在输出视觉对象中。将根据疾病类型绘制。

如何使用 DAX 来执行此操作。请用VAR解释我。

您需要断开连接的 table 用作 select A/B/C/D 的切片器。您可以像这样创建计算 table

Disease = VALUES ( Table1[Disease-Type] )

现在您需要一个措施来读取您的切片器 selection 并计算所需的百分比。

Percent =
VAR SelectedType =
    SELECTEDVALUE ( Disease[Disease-Type] )
VAR SelectedIDs =
    CALCULATETABLE ( VALUES ( Table1[ID] ), Table1[Disease-Type] = SelectedType )
VAR CurrentIDs = 
    VALUES ( Table1[ID] )
RETURN
    DIVIDE (
        COUNTROWS ( INTERSECT ( SelectedIDs, CurrentIDs ) ),
        COUNTROWS ( CurrentIDs )
    )

第一个变量 SelectedType 读取切片器 selection,第二个变量 SelectedIDs 是与该类型关联的 ID 值列表(对于 selection A 这是集合 {1, 2})。第三个变量 CurrentIDs 是当前评估上下文中的 ID 值列表(例如,在矩阵视觉的 row/column 上)。对于D,这个集合是{1, 3}.

最后,用交集的计数除以 CurrentIDs 的计数得到百分比。对于 row/column 和 D,这将是

|{1}| / |{1, 3}| = 1 / 2 = 50%