基于桥接表关联的两表创建带求和的DAX计算表
DAX计算表实现方案
假设各表名称如下(可根据实际表名替换):
- 维度表:
Report_Dim(包含Report、ReportRow、Account、Sign、UniqueKey字段) - 桥接表:
Account_Bridge(关联UniqueKey与Account) - 事实表:
Amount_Fact(包含FactKey、Account、Amount、Date字段) - 日期表:
Date_Dim(包含Date、Month字段)
基础实现代码
以下是生成目标计算表的核心DAX表达式:
目标计算表 = SUMMARIZECOLUMNS ( Report_Dim[Report], Report_Dim[ReportRow], Amount_Fact[Account], Date_Dim[Month], "Sum(Sign)", CALCULATE ( SUM ( Report_Dim[Sign] ) ), "Sum(Amount)", CALCULATE ( SUM ( Amount_Fact[Amount] ) ) )
关键说明
- 使用
SUMMARIZECOLUMNS完成多维度分组聚合,直接指定需要保留的维度字段(Report、ReportRow、Account、Month)。 - 依赖模型中已配置的关联关系:桥接表
Account_Bridge连接Report_Dim.UniqueKey与Amount_Fact.Account,日期表与事实表通过Date字段关联,DAX会自动处理跨表筛选逻辑。 - 通过
CALCULATE配合聚合函数,分别计算每个维度分组下的Sign总和与Amount总和。
显式关联控制版本
如果桥接表的关联逻辑需要更精准的控制,可使用TREATAS显式指定匹配规则:
目标计算表 = CALCULATETABLE ( SUMMARIZE ( CROSSJOIN ( Report_Dim, Amount_Fact, Date_Dim ), Report_Dim[Report], Report_Dim[ReportRow], Amount_Fact[Account], Date_Dim[Month], "Sum(Sign)", SUM ( Report_Dim[Sign] ), "Sum(Amount)", SUM ( Amount_Fact[Amount] ) ), TREATAS ( SELECTCOLUMNS ( Account_Bridge, "UniqueKey", Account_Bridge[UniqueKey], "Account", Account_Bridge[Account] ), Report_Dim[UniqueKey], Amount_Fact[Account] ), RELATEDTABLE ( Date_Dim ) )
内容的提问来源于stack exchange,提问作者glaring
相关产品推荐
相关产品推荐

