JOIN
JOIN在SQL Server中是一个很重要的概念。
JOIN经常用于将两个表或者多个表通过主外键关联进行组合查询。
在PowerBI中也有类似的概念,比如可以通过GENERATE函数和CROSSJOIN函数可以组成笛卡尔积,可以通过RELATED返回多端的维度。最直观类似的,是白茶之前描述的《INTERSECT函数》。
区别在于,事实表与维度表中的主外键通常是无冗余的,因此在SQL Server中使用JOIN可以避免出现重复数据的情况。
基础语法
语法:
SELECT 列名称(*) FROM 表1名称 (INNER) JOIN 表2名称 ON 表1名称.[列字段] = 表2名称.[列字段]
注意
INNER默认是可以省略的,JOIN等同于INNER JOIN。
使用实例
案例数据:
在白茶本机的数据库中,存在名为“TEST”的数据库,存在名为“产品表”的维度表和名为“销售明细”的事实表。
例子1:
在PowerBI中,将“产品表”中的销售价与“销售明细”组合,一起导入。
SELECT 销售明细.* ,
产品表.[销售价]
FROM 销售明细
INNER JOIN 产品表
ON 销售明细.[商品名称]=产品表.[商品名称]
ORDER BY 销售明细.[商品名称]
结果如下:
例子2:
在PowerBI中,将“销售明细”中的销售数量汇总后与“产品表”匹配导入到PowerBI中。
SELECT 产品表.* ,
SUMMARIZE.[数量]
FROM 产品表
INNER JOIN
(SELECT 销售明细.[商品名称] ,
SUM(销售明细.[销售数量]) AS 数量
FROM 销售明细
GROUP BY 销售明细.[商品名称]) AS SUMMARIZE
ON 产品表.[商品名称]=SUMMARIZE.[商品名称]
结果如下:
注: 这种写法采用的是先汇总,后JOIN。
汇总后的大表变成了小表,性能上提升比较多。
此种解法为SQL的标准解法。
当然,JOIN的变体还有其他几种:LEFT JOIN、RIGHT JOIN、FULL JOIN。这个我们后面再说。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有