表连接是指两张表根据关联字段,组合成一个数据集。表连接不仅可以利用数据模型中已有的关系,而且可以利用DAX表达式基于表的任意列定义连接条件。因此,在DAX中,实现表与表之间的连接,有两种方式:
- 第一种方式:利用数据模型中的现有关系,以便查询包含在不同表中的数据。
- 第二种方式:编写 DAX 表达式创建连接,以生成与关系等效的效果。
一,利用数据模型中的关系(左外连接)
利用数据模型中的关系来连接表,是DAX中最常用的行为,关系隐式实现外连接(LEFT JOIN)。DAX数据模型中的关系分为三种:实线关系,虚线关系和虚拟关系。其中,实线关系是指已经创建的、处于激活状态的关系;虚线关系是指已经创建的、处于未激活状态的关系;虚拟关系是指未创建、只在DAX中临时创建的关系。 数据模型中的关系,要求一方提供唯一值列,因此,只能创建1:M 和 1:1类型的关系,当两个表之间存在多对多的关系时,可以在DAX中使用TREATAS函数创建临时的关系。
例如,FactSales和DimProduct、FactSales和DimDate之间存在多对一的关系,可以利用关系来建立左外连接(LEFT OUTER JOIN),注意,左外联接的左表(保留表)是FactSales,右表是DimDate和DimProduct,这意味着,如果FactSales表中存在的数据不包含在DimProduct或DimDate表中,那么这些数据行都