You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DAX公式需聚合函数报错,如何实现每平方公里人口计算?

DAX新手问题解答:计算每平方公里就业人口

为什么公式报错?

DAX要求在引用跨表的多行列时必须用聚合函数——如果'Samenvoegen2'[2016]对应多条行记录,DAX无法自动确定要取哪一行的数值,因此强制要求用聚合操作把多值转成单一值。

COUNT函数的效果?

完全不适用。COUNT('Samenvoegen2'[2016])只会统计该列中非空值的数量,和你需要的百分比数值毫无关系,别用这个函数。

能不能不用聚合函数?

只有一种情况可以:当'Samenvoegen2'和'geonames'是一对一关联时(即每个地理区域对应唯一的2016百分比),DAX能自动匹配对应行的数值,这时候可以直接用RELATED函数拉取数据,不用聚合:

Employment per km2 = RELATED('Samenvoegen2'[2016]) * 'geonames'[Population] / 'geonames'[Area(in sq km)]

注意:这个公式要写在geonames表的计算列里,前提是两个表已经正确建立了一对一的关系。

该选哪种聚合函数?

既然你明确2016列是唯一百分比,那用MAX、MIN、LASTNONBLANK这类取单一值的聚合函数都可以——因为唯一值的情况下,这些函数返回的结果就是那个你需要的百分比。比如:

Employment per km2 = CALCULATE(MAX('Samenvoegen2'[2016]) * 'geonames'[Population] / 'geonames'[Area(in sq km)])

或者简化成(如果表关系正确,CALCULATE甚至可以省略):

Employment per km2 = MAX('Samenvoegen2'[2016]) * 'geonames'[Population] / 'geonames'[Area(in sq km)]

需要添加筛选吗?

如果你的数据里没有多余的冗余行(比如同一个地理区域对应多个2016百分比),不需要额外加筛选。如果存在其他无关维度(比如多年份数据),可以在CALCULATE里加筛选条件锁定2016年,但你已经直接引用了2016列,所以暂时不需要。

如何得到每平方公里人口的列表?

  • 如果用计算列:在geonames表创建上面的计算列后,把该列和地理名称列一起放到表格可视化组件中,就能得到每个区域的数值列表。
  • 如果用度量值:把geonames里的地理维度(比如地区名称)拖到可视化的行区域,再把度量值拖到值区域,即可生成列表。

内容的提问来源于stack exchange,提问作者Hksdnwl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 23:46:06