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

DAX实现带过滤多表关联:复现Power BI Report Builder可用的SQL查询

前置操作

  • 先确认Power BI数据模型中3张表的关联关系:CustomCar表[CarId]作为主键,分别和Chassis表[CarId]、Engine表[CarId]建立一对多的单方向关联,不需要启用双向交叉筛选。

可用DAX语句(可直接在Power BI Report Builder数据集里调用,也可作为Power BI模型中的计算表使用)

车辆当前配置列表 = 
FILTER(
    SELECTCOLUMNS(
        // 筛选符合条件的CustomCar记录,等效SQL中CustomCars表的where条件
        FILTER(
            CustomCar,
            CustomCar[IsActive] = 1 && CustomCar[FirstTestDriveYear] < 1980
        ),
        // 提取CustomCar所需字段
        "Name", CustomCar[Name],
        "CustomCarModel", CustomCar[Model],
        "MaxSpeed", CustomCar[MaxSpeed],
        // 关联提取当前激活的底盘字段
        "ChassisManufacturer", CALCULATE(SELECTEDVALUE(Chassis[Manufacturer]), Chassis[IsActive] = 1),
        "ChassisModel", CALCULATE(SELECTEDVALUE(Chassis[Model]), Chassis[IsActive] = 1),
        "ChassisManfDate", CALCULATE(SELECTEDVALUE(Chassis[ManufacturedDate]), Chassis[IsActive] = 1),
        // 关联提取当前激活的发动机字段
        "EngineManufacturer", CALCULATE(SELECTEDVALUE(Engine[Manufacturer]), Engine[IsActive] = 1),
        "EngineModel", CALCULATE(SELECTEDVALUE(Engine[Model]), Engine[IsActive] = 1),
        "Power", CALCULATE(SELECTEDVALUE(Engine[Power]), Engine[IsActive] = 1),
        "CylCount", CALCULATE(SELECTEDVALUE(Engine[CylCount]), Engine[IsActive] = 1),
        "EngineManufacturedDate", CALCULATE(SELECTEDVALUE(Engine[ManufacturedDate]), Engine[IsActive] = 1)
    ),
    // 过滤无对应激活底盘/发动机的记录,等效SQL的INNER JOIN逻辑
    NOT ISBLANK([ChassisManufacturer]) && NOT ISBLANK([EngineManufacturer])
)

逻辑说明

  • 因为业务规则保证同一时间每辆车只有1个激活状态的底盘、发动机,所以用SELECTEDVALUE可以直接返回匹配到的唯一值,不需要额外聚合
  • 所有输出字段别名和原SQL完全对齐,不需要额外调整即可直接用于报表设计
  • 基于你提供的样例数据,运行后仅会返回CarId=2的CustomBranco车辆对应记录,和原SQL运行结果完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 06:36:02