Power BI中selectcolumns函数+related函数实现SQL Server中的join

 

Power BI是微软开发的一款功能非常强大的的BI工具,可以制作非常美观的报表,但这个工具的核心是DAX,翻译为中文就是 数据分析表达式,有点类似于excel函数,但又很不一样。

DAX中的很多功能可以与SQL对应,但差异也很大。

 

下面就来讲一讲 用Power BI中DAX的selectcolumns函数+related函数,实现SQL中的join表关联。

1、下载power bi

可以在这个链接中下载中文版:https://powerbi.microsoft.com/zh-cn/downloads/

安装过程只需要不断点击“下一步” 按钮,就可以了,非常方便。

2、输入数据

这里不一定要输入,也可以先在excel等工具中输入数据,然后再导入就可以。

这里通过如下过程输入2个表的数据。

(1)打开 Power BI Desktop,然后 点击 “输入数据” 按钮,输入数据后,名称 填写 “销售表”,点击加载:

 

(2) 再增加一张 产品表,如下:

 

3、 建立模型

通常情况下,当我们增加表,输入数据后,power bi会自动检查表之前的关系,点击红色框的图标,显示如下图:

两个表之间有一条线,说明power bi已经自动识别了这2个表之间的关系,关联字段为 “产品编码”,一端为1(主表),一端是 * 号(子表),就是 1 对 多 的意思。 

这就已经实现了 sql的 join功能。

4、显示 销售表 join 产品表之后的数据

sql的写法: 

SELECT
    t2.产品编码,
	t2.产品名称,
	t1.销售日期,
	t1.数量,
	t1.金额
from 销售表 t1
INNER JOIN 产品表 t2
ON t1.产品编码 = t2.产品编码

power bi的方式,先点击 “建模”,然后点击“新表” 按钮:

在下方的输入框中输入代码,并回车,这样我们就新建了一个 “表”:

SELECTCOLUMNS('销售表',
              "产品编码",RELATED('产品表'[产品编码]),
              "产品名称",RELATED('产品表'[产品名称]),
              "销售日期",'销售表'[销售日期],
              "数量",'销售表'[数量],
              "金额",'销售表'[金额]
)

然后,点击 左侧的图标,在右侧 点击 “表” ,就可以看到 2个表关联后的 5行数据:

5、总结

在power bi中 实现 join:

(1)首先,需要创建模型,其实就是指定 表与表之前 关联字段的对应关系,是 1对1,还是1对多,还是多对多。

(2)在上面的dax中,引用到了 selectcolumns函数 和 related函数,前者是用来指定要select的列,就跟sql里的select子句没什么区别,第1个参数是指定 from 哪个表,下面的每一行,第1个参数是列别名,第2个参数是要显示的列。

           后者是 显示关联表的列时,比如,我们是 from 销售表,但要显示 产品表 的数据,这个时候就要指定 related函数,表示通过 join后(join会自动使用上面的模型),取出 产品表的 产品编码字段 以及 产品名称字段。