PowerBI数据建模时,经常会用到DAX来建维度表,之前分享过创建维度表的方式,参考:Power BI建立维度表
但是用最简单的VALUES来生成的一列不重复列表,作为维度表与事实表建立关系时,你可能还是会碰到下面两个问题。
1、无法建立"一对多"的关系
用VALUES函数生成了一个不含有重复值的维度表,应该是可以建立一对多的关系的,但是当你建立关系的时候,却出现了如下提示:

注:这个提示并不是不能建立关系,而是只能建立"多对多"的关系。
既然维度表都是不重复值,为什么还不允许建立"一对多"关系呢?
对于关系的一端,除了不允许有重复值,也不允许有空值,通过检查维度表,可以发现在维度表中确实是因为有空值导致的:

这种情况一般是由于明细表中的该列有空值,你可以整理补全明细表,如果不想改动明细表,也可以在生成维度表的公式中套个FILTER函数,将空值筛选出去:

然后这个不含有空值和重复值的维度表,就可以与明细表正常建立一对多的关系了。
上述情况虽然可以建立一对多关系,但当使用该维度表制作图表时,很可能会出现“空白”项,解决的办法见:PowerBI中为什么会有"空白"?以及查找缺失值的技巧
2、报错"循环依赖关系"
使用VALUES函数建立的维度表以后,在模型视图中将维度表的字段拖拽到明细表中的对应字段上,建立关系时,有时候会出现下面这个提示,无法创建关系。

这种情况在明细表中的关联字段也不含有重复值时会出现,解决的办法也很简单,就是反向拖拽。
选中明细表的关联字段,拖拽到维度表中的对应字段上,就可以建立关系了。

这种方式建立的是"一对一"的"双向"关系,可以鼠标双击关系线,改成“一对多”的“单一”方向关系。

以上就是两个常见建模问题的原因和解决办法,更多关于建模的问题,请参考这篇文章的思路:
Power BI数据建模,你遇到的各种问题,原来可以这样轻松解决
PowerBI星球 采悟