PowerPivot / DAX测量与SQL' WHERE IN' -type限制只有一个值

时间:2016-12-07 20:34:28

标签: excel powerpivot dax

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

enter image description here

这给了我一个数据透视表,看起来如下所示:

enter image description here

我正在处理的一个复杂问题是,我只想根据数据透视表左侧显示的Course1 Audience表中找到的职位人员报告Course1模块的百分比。目前,我通过将这些职称硬编码到我的衡量标准中来实现这一目标:

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())

虽然这样做很好,但它相当笨拙,我只是讨厌将硬编码逻辑转化为这样的措施。我更倾向于从表中获取针对Course1的那些标题,以便最终用户可以修改此列表而无需了解如何编写DAX度量。

我有什么方法可以参考"课程1受众"在我的衡量表中而不是这些位?:

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受众表中的那些职称。

1 个答案:

答案 0 :(得分:1)

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

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