BI-SQL丨JOIN

作者: Fabric丨白茶 | 来源:发表于2021-11-07 13:58 被阅读0次

    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。这个我们后面再说。

    这里是白茶,一个PowerBI的初学者。


    相关文章

      网友评论

        本文标题:BI-SQL丨JOIN

        本文链接:https://www.haomeiwen.com/subject/jpobmltx.html