关于Power BI 关联关系可用性说明

在Power BI中为表单创建关联关系时能发现,我们可以在两张表单之间创建多个关联关系,但只允许其中一个关联关系处于“可用”状态(用实线表示),其他的关联关系都将被设置成“不可用”状态(用虚线表示)。

之所以有这样的限制因为当表单之间有多个关联联系时,意味着无论使用哪个关联关系都可以将两张表单进行关联,完成跨表单查询需求。因此,在表单之间存在多个关联关系的情况下,必须明确告知Power BI哪条关联关系可用,以免其产生混淆。

需要注意的是由于表单之间的管理关系具有传播性,即使两张表单之间目前没有通过哪个关系列直接关联到一起,也可能通过其他表单作为媒介被间接的进行关联。此时再在两张表单之间创立关联关系时,Power BI也会将其置成“不可用”状态。

例如下图中,当在SalesInfo表与Account表中以Account列作为关系列创建关联关系时,Power BI会自动将其置成“不可用”状态。这是因为通过Account Owner表,SalesInfo表和Account表已经存在了关联关系,如果再在SalesInfo表和Account表之间使用Account列建立关联关系,就会导致从Account Owner表出发,有两条关联关系路径都可以实现对SalesInfo表的查询,因此Power BI为避免多义性,只能将其中一个关联关系状态设置为“可用”。
关于Power BI 关联关系可用性说明
对于处于“不可用”状态的关联关系,如果想将其改为“可用”,可以先将表单之间处于“可用”状态的关联关系改为“不可用”或删除,之后再将其改为“可用”即可。也可以通过使用DAX语言中的USERELATIONSHIP函数,该函数能在表达式计算过程中启用处于“不可用”状态的关联关系进行计算,将“可用”状态的关联关系临时“禁用”掉。

USERELATIONSHIP(<columnName1>,<columnName2>)

USERELATIONSHIP函数定义中包含两个参数,columnName1指的是关联关系中“多”的那一方数据列,而columnName2代表关联关系中“一”的一方数据列。columnName1和columnName2可以使原始数据列,也可以是计算列或者度量值,但不能是一个DAX表达式。USERELATIONSHIP函数会在表达式运行过程中使用指定的关联关系进行计算,而忽略表单直接已存在的处于“可用”状态的关联关系。