DAX-计算具有“ A”的人以及也具有“ B”的人的可能性的百分比

时间:2019-06-18 11:36:04

标签: powerbi dax powerbi-desktop

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

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

现在我想从疾病类型中选择一种疾病。让我们说“ A”。

我想在图中看到这样,

B    100%
C    100%
D    50%
B是100%,因为如果该ID患有疾病B,那么它也患有疾病“ A”(所选疾病)。 C为100%,因为如果该ID患有疾病C,则其也患有疾病“ A”(所选疾病)。

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

还要注意,在输出视觉中不应看到A。将根据疾病类型进行绘制。

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

1 个答案:

答案 0 :(得分:2)

您需要将断开连接的表用作切片器来选择A / B / C / D。您可以像这样创建一个计算表

Disease = VALUES ( Table1[Disease-Type] )

现在,您需要一个度量来读取切片器选择并计算所需百分比。

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会读取您的切片器选择,第二个变量SelectedIDs是与该类型关联的ID值的列表(对于选择A,这是设置{1, 2})。第三个变量CurrentIDs是当前评估上下文中(例如,在矩阵视觉的行/列上)的ID值的列表。对于D,此集合为{1, 3}

最后,将相交的计数除以CurrentIDs的计数即可得出百分比。对于带有D的行/列,应为

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