在Power BI的浩瀚宇宙里,度量值是链接数据与洞察的桥梁。聚合迭代器函数,作为度量值的魔法棒,能将看似平凡的数据点石成金,转化成决策的金矿。本文将通过三个生动实例,带你领略聚合迭代器函数的风采,揭秘RELATED 、RELATEDTABLE 和VALUES 的使用秘诀,让你的Power BI报告跃升至新高度。 第一章:度量值的基石——简单聚合聚合迭代器函数及关键概念详解1. SUMX 函数功能:对一个表的每一行应用一个表达式,并将结果求和。 语法:SUMX(table, expression) 用法示例: Dax1总收入 = SUMX(Sales, Sales[收入])
这里,对于Sales 表中的每一行,Sales[收入] 的值会被累加,得到总收入。
2. RELATED 函数功能:从当前行所在的表查找与之在关系中关联的表中的对应行,并返回指定列的值。 语法:RELATED(table[column]) 用法示例: Dax1单行折扣 = RELATED(Discounts[折扣额])
假设当前行属于Sales 表,此函数会找到与之通过订单ID关联的Discounts 表中的行,并返回该行的折扣额 。
3. RELATEDTABLE 函数4. VALUES 函数5. SUMMARIZE 函数功能:基于一组列对表进行分组,并为每个组计算一个或多个聚合值。 语法:SUMMARIZE(table, group_by_column1, ..., aggregation_column, aggregation_function) 用法示例: Dax1订单收入摘要 = SUMMARIZE(Sales, Sales[订单ID], '总收入', SUM(Sales[收入]))
此函数将Sales 表按照订单ID 分组,并为每个组计算收入 的总和,生成一个新的汇总表。
筛选器上下文通过综合运用这些函数和理解筛选器上下文的工作原理,你可以构建出既强大又灵活的Power BI度量值,满足复杂的数据分析需求。 示例1:收入总和 一切从基础开始。要统计总收入,只需用聚合函数SUM 直接相加收入列即可。 第二章:迭代的魅力——计算复杂度量示例2:折扣总和 进入迭代领域,我们需要更精细的操作。假设折扣信息不在主表中,而是关联的折扣表通过订单ID相连。这时,RELATED 函数大显身手,它能跨表抓取相关信息。 Dax1总折扣 = SUMX(Sales, RELATED(Discounts[折扣额]))
这里,SUMX 配合RELATED ,遍历Sales 表中的每一行,取出与之相关的折扣表中的折扣额 ,最终求和。 第三章:深入迭代——高级计算技巧示例3:平均收入订单行值 更进一步,我们想计算平均每个订单的收入行值。这要求先对订单分组,然后对每个订单内的收入求和,最后求平均。VALUES 和SUMMARIZE 携手完成此壮举。 Dax1平均收入订单行 = 2VAR OrderGroups = SUMMARIZE(Sales, Sales[订单ID], '总收入', SUM(Sales[收入])) 3RETURN AVERAGEX(OrderGroups, [总收入])
这里,SUMMARIZE 先按订单ID 分组并计算每个组的总收入,生成新的表OrderGroups 。然后,AVERAGEX 遍历这个新表,计算平均值。 第四章:迭代器与筛选器上下文的联袂演出RELATEDTABLE与VALUES的舞台 RELATEDTABLE 允许你访问相关表的所有行,而VALUES 则在筛选器上下文中发挥作用,循环访问每个值。
假设我们要在特定条件下计算订单的平均收入,首先确定筛选条件,然后使用VALUES 迭代这些条件。 Dax1特定条件平均收入 = 2VAR FilteredOrders = VALUES(Sales[订单ID]) 3RETURN 4 AVERAGEX( 5 FILTER(Sales, Sales[订单ID] IN FilteredOrders), 6 Sales[收入] 7 )
这里,VALUES 首先生成所有订单ID的列表,然后通过FILTER 筛选出符合条件的订单,最后计算这些订单的平均收入。
|