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

如何用DAX实现SALES与ROYALTIES表的关联整合报表?

用DAX实现两事实表内连接生成新表

你需要实现的是和SQL内连接等价的DAX表生成逻辑,基于已有的维度表关联关系,有两种常用实现方式:

方法1:使用NATURALINNERJOIN函数(推荐,简洁直观)

这个函数会自动匹配两个表中列名完全相同的字段进行内连接,和你的SQL逻辑完全对应:

Sales_Royalties_Combined = 
NATURALINNERJOIN (
    SELECTCOLUMNS(SALES, "Store", SALES[Store], "Year", SALES[Year], "Category", SALES[Category], "SalesAmount", SALES[SalesAmount]),
    SELECTCOLUMNS(ROYALTIES, "Store", ROYALTIES[Store], "Year", ROYALTIES[Year], "Category", ROYALTIES[Category], "initial_value", ROYALTIES[initial_value], "final_value", ROYALTIES[final_value], "royalties_pct", ROYALTIES[royalties_pct])
)

注意:如果两个表中存在其他同名但不需要参与连接的列,用SELECTCOLUMNS先筛选出目标字段,能避免不必要的匹配干扰。

方法2:使用ADDCOLUMNS + LOOKUPVALUE函数(适合自定义匹配逻辑)

如果需要更灵活的匹配规则(比如列名不一致),可以基于SALES表的基础字段,从ROYALTIES表中精准查找对应值:

Sales_Royalties_Combined = 
ADDCOLUMNS (
    SELECTCOLUMNS(SALES, "Store", SALES[Store], "Year", SALES[Year], "Category", SALES[Category], "SalesAmount", SALES[SalesAmount]),
    "initial_value", LOOKUPVALUE(ROYALTIES[initial_value], ROYALTIES[Store], [Store], ROYALTIES[Year], [Year], ROYALTIES[Category], [Category]),
    "final_value", LOOKUPVALUE(ROYALTIES[final_value], ROYALTIES[Store], [Store], ROYALTIES[Year], [Year], ROYALTIES[Category], [Category]),
    "royalties_pct", LOOKUPVALUE(ROYALTIES[royalties_pct], ROYALTIES[Store], [Store], ROYALTIES[Year], [Year], ROYALTIES[Category], [Category])
)

注意:LOOKUPVALUE要求匹配条件返回唯一值,你已通过维度表保证了Store/Year/Category的唯一性关联,因此不会出现多值匹配错误。

基于维度表的优化实现(大数据量场景更高效)

由于你已经创建了Store、Year、Category三个维度表并建立了一对多关系,也可以直接基于维度表构建组合表,性能表现更优:

Sales_Royalties_Combined = 
FILTER(
    ADDCOLUMNS (
        CROSSJOIN(Store, Year, Category),
        "SalesAmount", CALCULATE(SUM(SALES[SalesAmount])),
        "initial_value", CALCULATE(MAX(ROYALTIES[initial_value])),
        "final_value", CALCULATE(MAX(ROYALTIES[final_value])),
        "royalties_pct", CALCULATE(MAX(ROYALTIES[royalties_pct]))
    ),
    NOT(ISBLANK([SalesAmount])) && NOT(ISBLANK([initial_value]))
)

这里的SUM/MAX需根据你的实际数据聚合逻辑调整,最后用FILTER过滤掉无销售或无 royalty 数据的无效行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 06:45:37