小伙伴们,大家好呀!今天继续和大家分享Power BI相关知识。之前在小编的学习交流群里面,高频被问到的一个问题:如何处理Power BI矩阵中汇总值的问题。针对这个通用的需求,小编今天特意准备一篇文章和大家分享。
下图是按照销售区域对不同区域销售额进行汇总,红色框里面是所有地区销售额的汇总,通常来说,这个能应付大部分场景,但是,遇到有些场景,例如,我们需要在汇总的地方计算销售区域的销售额均值,而不是求和,这里面就涉及到处理总计的计算逻辑。
这类场景通用的方法是用IF+HASEONEVALUE来进行处理,HASONEVLAUE函数函数是DAX中的一个逻辑函数,主要用于判断在当前的筛选上下文中,指定的列是否只包含一个唯一值。这个函数在创建复杂的数据分析报表时非常有用,特别是在你需要基于特定条件改变计算逻辑或者显示信息时。
基本语法
Dax1HASONEVALUE(table[column])
table
: 表名,你想要检查其某一列值的表。column
: 列名,你想要检查是否只有一个值的列。
返回值
如果指定列在当前筛选上下文中确实只有一个唯一的值,
HASONEVALUE
函数返回TRUE
。如果有零个值或多于一个值,则返回
FALSE
。
应用场景
条件计算:当你需要基于某个字段是否有单一选定值来决定是否执行某种计算或返回特定值时。
动态显示:在矩阵或表格视觉元素中,用于控制当用户交互(如点击切片器)使某列仅有一个筛选值时的显示内容。
避免总计:配合
IF
语句,可以用来阻止在视觉对象中对某些度量值进行总计计算,因为总计没有意义或不符合业务逻辑。
示例
假设你有一个销售数据模型,其中包含产品表Product
,你想在矩阵中显示每个产品的目标销售额,但如果用户没有选择具体的产品(即筛选上下文中产品列有多于一个值或没有值),则显示一个默认值。
Dax1Target_Display =
2IF(
3 HASONEVALUE(Product[ProductID]),
4 AVERAGE(Product[TargetSales]),
5"N/A"
6)
在这个例子中,如果用户选择了单一产品,函数将返回该产品的平均目标销售额;如果没有选择或选择了多个产品,则显示"N/A"。
有了上面对HASONEVALUE函数的基础知识后,我们可以很容易知道如何来处理这个需求,下面是简单的表达式供参考。
sales_amount_revised =
IF (
HASONEVALUE ( 'DimCity'[地区] ),
[sales_amount],
AVERAGEX ( VALUES ( 'DimCity'[地区] ), [sales_amount] )
)
度量值非常简单,我们对地区字段做了判断,如果外部筛选上下文中只有一个值,那么返回正常的计算,如果是多个值(例如,在总计处)则返回以上所有地区的均值。这个算是一个比较通用的处理方法,大家可以牢记,遇到此类需求可以套用。
免费课程:Power BI免费课程更新至202405月 免费课程绝大部分都是录制视频讲解,针对典型案例进行讲解,大家可以当做是一个字典,需要时候来找一找。免费课程不系统,有些基础内容小编默认你是知道,所以没有详细讲解,需要系统学习推荐看看小编的付费系统课程。 付费课程:Power BI会员课程更新(202310) 付费课程从零基础开始讲解,上手平滑,深入浅出,结合实际案例针对性强。具体可以参考介绍,课程内容持续更新,永久学习!(付费后,小编后面开发推出的所有课程和资源免费获取,无需再付费!) 交流答疑群:本群为付费制(49/一位),仅作为学习交流Power BI/Excel/Tableau/SQL等数据分析、数据处理工具用,有问题可以描述清楚你的问题,附上案例数据求助。除此外,不讨论任何无关事情,违者立刻剔除。啊?不是吧?加群还要付费?嗯,是的,所以,加群后请谨言慎行!群里会不定期分享各类模板、学习书籍等资讯,确认以上条件都能接受再添加小编私信!