如何在Power BI Deneb的原生Vega中计算数据集列的最大值?
解决Vega中计算整列最大值的问题
你之前用formula转换失败的原因很明确:formula是逐行执行的,datum只代表当前行的数据,max(datum['ColumnWhereILookForMax'])本质上就是取当前行的字段值,自然拿不到整列的最大值。下面给你两种在Vega端高效计算整列最大值的方案:
方案一:使用Window转换(简洁直接)
通过window转换定义全局窗口范围,直接在原数据集的每一行添加上整列的最大值:
"data": [ { "name": "dataset", "transform": [ { "type": "window", "ops": ["max"], "fields": ["ColumnWhereILookForMax"], "as": ["maxValue"], "frame": [null, null] // 设为[null,null]表示覆盖整个数据集的所有行 } ] } ]
处理后,dataset里的每一行都会新增maxValue字段,值就是目标列的全局最大值。
方案二:Aggregate聚合+Lookup关联(灵活扩展)
先单独聚合出最大值再关联到原数据集,适合需要单独使用最大值(比如绘制参考线)的场景:
"data": [ // 第一步:单独计算整列最大值,生成仅含一行的数据集 { "name": "max_calculation", "source": "dataset", "transform": [ { "type": "aggregate", "groupby": [], // 空groupby表示对全量数据聚合 "fields": ["ColumnWhereILookForMax"], "ops": ["max"], "as": ["maxValue"] } ] }, // 第二步:把最大值关联到原数据集的每一行 { "name": "final_dataset", "source": "dataset", "transform": [ { "type": "lookup", "from": "max_calculation", "values": ["maxValue"], "as": ["maxValue"] // 因为max_calculation只有一行,无需指定匹配字段 } ] } ]
后续可视化直接使用final_dataset即可,若需要单独调用最大值,直接引用max_calculation数据集的唯一行即可。
内容的提问来源于stack exchange,提问作者Michał Ozimek
相关产品推荐
相关产品推荐

