在PowerBI中使用两个事实表执行SUMPRODUCT运算的技术咨询
在Power BI中实现两个事实表的SUMPRODUCT计算
没问题,我来帮你搞定这个SUMPRODUCT计算需求!本质上我们要做的就是把dw fact qnt cotas里的Quantidade_total和API Quantum中匹配到的分红值逐行相乘,再把所有乘积加起来。下面分两种常见场景给你具体的DAX实现方案:
场景1:数据模型已建立关联
如果你的模型已经通过以下关联把两张表连起来了:
dw fact qnt cotas[Ativo]和API Quantum[Codigo]是匹配字段dw fact qnt cotas[DataCorrigida]和API Quantum[Data]是匹配日期
那直接用SUMX就能轻松实现,DAX公式如下:
SUMPRODUCT_Result = SUMX( 'dw fact qnt cotas', 'dw fact qnt cotas'[Quantidade_total] * RELATED('API Quantum'[Provento Dividendos não Ajustado]) )
这个公式的逻辑是:逐行遍历dw fact qnt cotas的每一条聚合记录,通过已有的关系找到API Quantum里对应的分红值,相乘后把所有结果累加起来,完美对应SUMPRODUCT的需求。
场景2:未建立表间关联(或关联无法直接使用)
如果因为模型设计的原因没建上述关系,或者关联方向导致RELATED用不了,那就换LOOKUPVALUE来精准匹配,DAX公式是这样:
SUMPRODUCT_Result = SUMX( 'dw fact qnt cotas', 'dw fact qnt cotas'[Quantidade_total] * LOOKUPVALUE( 'API Quantum'[Provento Dividendos não Ajustado], 'API Quantum'[Codigo], 'dw fact qnt cotas'[Ativo], 'API Quantum'[Data], 'dw fact qnt cotas'[DataCorrigida] ) )
这里LOOKUPVALUE会根据当前行的Ativo和DataCorrigida,在API Quantum里找到完全匹配的分红值,再和Quantidade_total相乘,最后用SUMX把所有乘积加总。
几个要注意的点
- 一定要确保匹配字段的数据类型完全一致!比如
Ativo和Codigo都得是文本类型,DataCorrigida和Data都得是日期类型,不然会出现匹配不上的情况。 - 如果
API Quantum里同一个Codigo+Data对应多条记录,LOOKUPVALUE会报错,这时候得先给API Quantum做个汇总:
API Quantum 汇总表 = SUMMARIZE( 'API Quantum', 'API Quantum'[Codigo], 'API Quantum'[Data], "总分红", SUM('API Quantum'[Provento Dividendos não Ajustado]) )
然后在SUMPRODUCT的公式里用这个汇总表的总分红字段就行。
内容的提问来源于stack exchange,提问作者Renato Rezk
相关产品推荐
相关产品推荐

