表连接与联合

  • 文档创建者:Roxy
  • 历史版本:3
  • 最近更新:Wendy123456 于 2023-08-29
  • 1. 概述

    进行数据处理时,经常需要将数据表进行连接,本文介绍在 FineDataLink 中的多种连接方式。

    2. 左连接

    LEFT JOIN(左连接)和 LEFT OUTER JOIN(左外连接) :返回包括左表中的所有记录和右表中连接字段相等的记录。

    根据条件以左表为基准进行匹 配,如果匹配则正常输出,没有则以 null 代替,而且右边表有重复值的情况下会输出多条。

    在 FineDataLink 中可以使用「数据关联」实现。

    有两张表如下:

    使用数据关联左连接,如下图所示:

    得到以下结果:

    上述算子设置相当于 SparkSQL 中的语法:

    select * from DB表输入-副本
    left join DB表输入1-副本
    on DB表输入-副本.`姓名`  = DB表输入1-副本.`姓名` 

     或者 

    select * from DB表输入-副本
    left outer join DB表输入1-副本
    on DB表输入-副本.`姓名`  = DB表输入1-副本.`姓名` 

    注:LEFT JOIN 和 LEFT OUTER JOIN 的输出结果是一样的。

    LEFT SEMI JOIN(左半连接):

    只显示左边的表中的列,如果条件在左右边表中匹配,则输出,否则 过滤掉,而且右边表有重复值的情况下也只输出一条。

    例如上述两张数据表,如果使用左半连接则

    注:语句不能直接复制,数据表需点击输入源生成。

    则只会显示左右边表都匹配的结果,且右侧重复值被删除,结果如下:

    3. 右连接

    与左连接一致,使用「数据关联」即可实现。

    4. 全连接

    与左连接一致,使用「数据关联」即可实现。

    5. 内连接

    与左连接一致,使用「数据关联」即可实现。

    5. UNION 和 UNION ALL 联合

    UNION:会在上下联合时去除完全重复的数据。如果不为了去除重复行,建议使用 UNION ALL,并且效率会更高。

    示例: select* from ( select 2 as id_no,99 as score union select 2 ,95 ) Student_Score

    UNION ALL :对查询的数据集取并集,不会去除重复行。

    例如使用如下数据表进行上下联合:

    1)使用两个DB表输入算子,使用 SQL 与筛选出表a1,a2的全部数据,然后 Spark SQL 算子的 SQL 语句为:

    select * from a1
    union all
    select * from a2

    效果如下图所示:

    注:语句不能直接复制,数据表需点击输入源生成。


    结果如下图所示:


    如果使用 UNION 则表一种的重复数据会被删除,仅保留一条,结果如下图所示:

    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!