能否在DAX中获取表变量的列?如何用MAX处理表变量
在Power BI中访问DAX计算表变量的列及使用MAX函数的方法
核心结论
可以直接访问DAX计算表变量的列,但不能直接用MAX(表变量[列名])的语法,需要借助迭代函数或CALCULATE实现对表变量列的MAX聚合。
问题原因分析
你提供的第一段代码能运行,是因为COUNTROWS()的参数直接接受表表达式,计算表变量本身就是合法的表表达式;而第二段代码中,MAX()作为标量函数时,仅能识别模型中已存在的列(如原生列、模型计算列),无法直接引用仅存在于变量中的临时列,因此报错。
正确实现方式
方法1:使用MAXX迭代函数(推荐)
MAXX是迭代函数,会遍历表变量的每一行,提取指定列的值并返回最大值:
HighestOrderQuantity = VAR ORDERS = SUMMARIZECOLUMNS(Sales[ordernumber], "OrderQuantity", SUM(Sales[quantity])) RETURN MAXX(ORDERS, [OrderQuantity])
方法2:使用CALCULATE结合MAX
通过CALCULATE将表变量作为筛选上下文,让MAX能识别临时列:
HighestOrderQuantity = VAR ORDERS = SUMMARIZECOLUMNS(Sales[ordernumber], "OrderQuantity", SUM(Sales[quantity])) RETURN CALCULATE(MAX([OrderQuantity]), ORDERS)
补充说明
除MAX外,对计算表变量的列进行其他聚合(如MIN、AVERAGE等),都可遵循类似逻辑:使用对应迭代函数(MINX、AVERAGEX),或通过CALCULATE配合标量聚合函数实现。
内容的提问来源于stack exchange,提问作者smedv
相关产品推荐
相关产品推荐

