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

如何获取事实表数据?Power BI农场区域容量历史查询

需求与问题
  • 模型按箭头方向筛选,需通过日期范围筛选,从事实表提取包含农户、农场、农场所属区域的表格,同时展示农场max_capacity与各区域max_capacity的历史变化。
  • 场景示例:2024/01/01至2024/01/31期间,农户g1拥有农场g1及4个区域z1-z4,需查看各农场及区域的容量历史。
  • 尝试的DAX代码:
zone_max_capacity = 
    CALCULATE(
            MAX(fact_zone_params[max_capacity]),
            CROSSFILTER(dim_zone[id_zone], fact_farm_zone_farmer[id_zone], Both),
            CROSSFILTER(fact_zone_params[id_zone], dim_zone[id_zone], Both)
    )
  • 核心问题:MAX函数仅返回全局或当前筛选下的单个最大值,无法获取所有符合条件的历史记录,需要生成如下格式的明细表格:
农户农场max_capacity区域日期区域max_capacity
f1500z12024/01/0125
f2300z12024/01/0120
f2300z12024/01/0250
f2300z12024/01/0370
f3100z12024/01/08100
解决方案

方法1:构建计算表直接生成明细报表

使用SUMMARIZECOLUMNS关联所有相关表,直接提取所需字段并保留所有历史记录,适合一次性生成完整报表:

容量历史报表 = 
SUMMARIZECOLUMNS(
    -- 指定要展示的维度字段
    dim_farmer[农户],
    dim_farm[农场max_capacity],
    dim_zone[区域],
    fact_zone_params[日期],
    -- 提取区域容量字段
    "区域max_capacity", fact_zone_params[max_capacity],
    -- 应用日期筛选条件(可根据需要调整或改为依赖外部切片器)
    FILTER(dim_date, dim_date[日期] >= DATE(2024,1,1) && dim_date[日期] <= DATE(2024,1,31)),
    -- 建立农户-农场-区域的关联关系
    TREATAS(VALUES(fact_farm_zone_farmer[id_farmer]), dim_farmer[id_farmer]),
    TREATAS(VALUES(fact_farm_zone_farmer[id_farm]), dim_farm[id_farm]),
    TREATAS(VALUES(fact_farm_zone_farmer[id_zone]), dim_zone[id_zone])
)

方法2:修改度量值适配行上下文

如果需要在可视化组件(如矩阵、表格)中动态展示,改用MAXX替代MAX,让函数在当前行上下文的筛选范围内返回对应值:

zone_max_capacity = 
MAXX(
    RELATEDTABLE(fact_zone_params),
    fact_zone_params[max_capacity]
)

使用时只需将农户、农场、区域、日期拖入可视化的行/列字段,再添加该度量值和农场max_capacity字段,即可自动展示每一行的区域容量历史。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 16:19:53