这是星球里一位星友的提问:
其中的发货单表,是从某个订单表里通过values函数构建的唯一值表:
但是,当用这个表去和其他事实表构建表间关系时,会被识别为多对多:
为什么会这样?
经检查发现,用values函数构建的这个发货单号表,中间存在空白内容,也就是说,原来的事实表里本身就存在空白(没有发货单号)的情况!
这里的多对多正是这个空内容导致的!
有的朋友可能会说,空内容本身不应该也是一个唯一“值”吗?可以和事实表里的订单号为空的内容关联?
但是,在DAX里,这不可以,因为,会存在歧义,当存在空内容时,无法建立一对多的关系。
为什么呢?从“原理”上来说,你可以这么理解,在Power BI(或说Power Pivot)的数据模型里,会自动给一端的表添加一个“隐藏的空值”,用于匹配多端表里无法匹配到的内容,而你的表里本身又有一个空值,从而导致了有“多个空值”的存在。
那么,这个问题怎么解决呢?
其实也很简单,通过筛选去掉空值即可:
FILTER(
VALUES('应收账款U8T+'[发货单号]),
'应收账款U8T+'[发货单号]<>blank()
)
此前,我还曾经发过一篇也是关于表间关系构建存在类似问题的文章:《明明删除了重复项,为什么还是说有重复值?》,借此机会做个引用,供大家一并参考。
本文分享自 Excel到PowerBI 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!