PowerPivot/DAX measure with SQL 'WHERE IN'-type restriction on one one value

PowerPivot/DAX measure with SQL 'WHERE IN'-type restriction on just one one value

我使用非常简单的 DataModel 按站点报告课程完成情况:

这给了我一个 PivotTable,看起来如下图所示:

我正在处理的一个复杂问题是,我只想报告 Course1 模块的百分比,这些百分比基于具有在 Course1 受众 table 中找到的职位的人员,显示在枢轴 Table。目前,我通过 hard-coding 将这些职位纳入我的衡量标准来实现这一点:

IF(HASONEVALUE(Completions[Module]),
    IF(VALUES(Completions[Module])="Course1",
        CALCULATE(COUNTA(Completions[Email]),
            OrgChart[Title]="Job Title 1"
            ||OrgChart[Title]="Job Title 2"
            ||OrgChart[Title]="Job Title 3"
            ||OrgChart[Title]="Job Title 4"
            ||OrgChart[Title]="Job Title 5")
         /CALCULATE(COUNTA(AllStaff[Email]),
            OrgChart[Title]="Job Title 1"
            ||OrgChart[Title]="Job Title 2"
            ||OrgChart[Title]="Job Title 3"
            ||OrgChart[Title]="Job Title 4"
            ||OrgChart[Title]="Job Title 5"))
    ,COUNTA(Completions[Email])/COUNTA(AllStaff[Email]))
,BLANK())

虽然它工作得很好,但它相当笨拙,我只是讨厌 hard-coding 逻辑进入这样的措施。我宁愿让度量从 Table 中吸收 Course1 的那些标题,这样最终用户就可以修改此列表,而不必了解如何编写 DAX 度量。

有什么方法可以在我的度量中引用 "Course 1 Audience" Table 而不是这些位?:

OrgChart[Title]="Job Title 1"
||OrgChart[Title]="Job Title 2"
||OrgChart[Title]="Job Title 3"
||OrgChart[Title]="Job Title 4"
||OrgChart[Title]="Job Title 5"

请注意,这仅适用于 Course1。所有其他课程的完成率应基于所有员工计算,而不是仅排除课程 1 听众中的那些职位table。

您可以使用 CONTAINS() 函数。这个小片段应该可以工作,但我没有你的数据所以我无法测试它。确保您的课程 1 受众数据也存储在您的数据模型中。

FILTER(OrgChart,CONTAINS(VALUES([Course 1 Audience]),[Course 1 Audience],OrgChart[Title])