如何在Power BI中使用DAX关联两表并获取Month ID
解决Power BI中Data表匹配Period表Month ID的问题
方法一:用Power Query合并查询(最稳妥)
- 打开Power Query编辑器,确保Period和Data两张表都已加载
- 选中Data表,点击顶部菜单栏的合并查询,在弹出窗口中:
- 右侧选择Period表
- 两张表的匹配列都选
Days - 连接类型选左外部(从第一个表中获取所有行,从第二个表中匹配的行)
- 点击确定后,Data表会新增一列包含Period表的匹配数据,点击列名旁的展开按钮,只勾选
Month ID字段,确定即可 - 关闭并应用Power Query,Data表就会带上对应的Month ID
方法二:用DAX添加计算列
如果已经在数据模型中给两张表的Days字段建立了关系(一对多,Period是一端,Data是多端),直接在Data表新建计算列:
Month ID = RELATED(Period[Month ID])
如果没建立关系,或者Period的Days有重复值,用LOOKUPVALUE或MAXX+FILTER:
// 当Period中Days唯一时用这个 Month ID = LOOKUPVALUE(Period[Month ID], Period[Days], Data[Days]) // 当Period中Days有重复,取第一个匹配的Month ID时用这个 Month ID = MAXX(FILTER(Period, Period[Days] = Data[Days]), Period[Month ID])
为什么你之前的方法失败?
CROSSJOIN是生成两张表的所有笛卡尔组合,会把每个Data的Days和Period的所有Month ID配对,完全不符合需求LOOKUP函数如果用法不对,比如没指定正确的匹配条件,或者遇到重复值就会出错,不如上面两种方法直接可靠
内容的提问来源于stack exchange,提问作者Yashvi
相关产品推荐
相关产品推荐

