PowerBI DAX函数:ISINSCOPE与ISFILTERED详解及层级占比计算

需积分: 18 29 下载量 84 浏览量 更新于2024-06-30 1 收藏 6.45MB PDF 举报
在PowerBI DAX函数的深入学习教程【第三卷】中,本章节主要介绍了两个关键函数:ISINSCOPE和ISFILTERED,以及它们在数据透视分析中的应用。首先,ISFILTERED函数用于判断指定表或列是否被筛选,当满足被筛选条件时返回True。而ISINSCOPE函数则更进一步,它检查一个列是否处于层级结构中并且被筛选,同样在满足这些条件时返回True。通过在13.xlsx演示文件中使用这两个函数,例如: - 度量值ISINSCOPE('商品表'[商品名称]):表示商品名称是否被筛选且位于层级结构内。 - 度量值ISINSCOPE('商品表'[产品类别]):检查产品类别是否同样符合筛选和层级条件。 作者还展示了如何通过SWITCH函数将这两个检查结果合并,以便在单一度量中同时显示商品名称和产品类别的层级占比情况。例如: ```powerbi =SWITCH(TRUE(), ISINSCOPE('商品表'[商品名称]), "True", ISINSCOPE('商品表'[产品类别]), "True", "False") ``` 接着,讲解了ALLSELECTED函数,这是一个特殊的“占比专用函数”,用于处理内外部筛选的逻辑。当外部筛选(如商品名称)应用时,ALLSELECTED会将内部筛选(如所有商品)移除,这样可以计算出未受内部筛选影响的基数。例如,计算总销售与筛选商品名称后总销售的比率: - 总销售(sum('销售表'[销售])) - 分母(CALCULATE([总销售], ALLSELECTED('商品表'[商品名称]))) - 通过占比=DIVIDE([总销售], [分母])得到筛选后的商品名称销售占比。 最后,章节详细探讨了如何利用ISINSCOPE和ALLSELECTED函数来计算层级占比,例如: - 度量值占比层级=SWITCH中,如果商品名称满足层级条件,则占比为总销售除以ALLSELECTED后的产品销售,否则继续检查产品类别。 这部分内容展示了在实际数据分析中灵活运用DAX函数处理层级关系和筛选条件的重要性,帮助用户深入了解PowerBI中数据模型的动态变化对分析结果的影响。