反馈已提交

网络繁忙

SparkSQL常用语法

  • 文档创建者:Roxy
  • 历史版本:4
  • 最近更新:Wendy123456 于 2024-03-27
  •  1. 概述

    本文来介绍 SparkSQL 中的一些常用操作符合语法。

    2. 常用操作符

    操作符含义详情
    =等值比较

    A=B。如果表达式 A 与表达式 B 相等,则为TRUE;否则为 FALSE

    在 FineDataLink 中可以用 数据过滤 实现

    <>不等值比较

    A <> B。如果表达式 A 为 NULL,或者表达式 B 为 NULL,返回 NULL;如果表达式 A 与 表达式 B 不相等,则为 TRUE;否则为 FALSE

    在 FineDataLink 中可以用 数据过滤 实现

    <小于

    A < B。 如果表达式 A 为 NULL,或者表达式 B 为 NULL,返回 NULL;如果表达式 A 小 于表达式 B,则为 TRUE;否则为 FALSE

    在 FineDataLink 中可以用 数据过滤 实现

    <=小于等于

    A <= B。如果表达式 A 为 NULL,或者表达式 B 为 NULL,返回 NULL;如果表达式 A 小 于或者等于表达式 B,则为 TRUE;否则为 FALSE

    在 FineDataLink 中可以用 数据过滤 实现

    >=大于等于

    A >= B。如果表达式 A 为 NULL,或者表达式 B 为 NULL,返回 NULL;如果表达式 A 大 于或者等于表达式 B,则为 TRUE;否则为 FALSE

    在 FineDataLink 中可以用 数据过滤 实现

    IS NULL空值判断

    A IS NULL。如果表达式 A 的值为 NULL,则为 TRUE;否则为 FALSE

    在 FineDataLink 中可以用 数据过滤 实现

    IS NOT NULL非空值判断

    A IS NOT NULL。 如果表达式 A 的值为 NULL,则为 FALSE;否则为TRUE

    在 FineDataLink 中可以用 数据过滤 实现

    LIKE模糊匹配

    A[NOT] LIKE B。

    如果字符串 A 或者字符串 B 为 NULL,则返回 NULL;如果字符串 A 符 合表达式 B 的正则语法,则为 TRUE;否则为 FALSE。B 中字符”_”表示任意单个字符,而字 符”%”表示任意数量的字符。

    FineDataLink 通过更简便的可视化方式实现模糊查询和筛选,提升用户的处理效率。详情参见:字段模糊查询/筛选

    AND逻辑与

    A AND B

    如果 A 为 TRUE,B 为 TRUE,则为 TRUE,否则 FALSE。 

    OR逻辑或

    A OR B

    如果 A,B 至少有一个为 TRUE,则为 TRUE,否则 FALSE

    3. AS-新增列/更改字段名

    示例:

    • 新增 type 列,值为测试 。SQL 语句为:select `name` ,'测试' AS type from ab

    • 新增 biaoji 列,数学成绩大于 90 标记为 1,否则标记为 0。SQL 语句为:select `math` ,if(`math` >90,1,0)  AS biaoji from ab

    推荐您使用更简便的方案:「新增列条件赋值

    若使用需要定义新增列为中文,则需要对列名加 `,例如:select "测试" as `字段`

    4. GROUP BY-数据去重

    详情参见:数据去重

    5. 排序

    Order by:全局排序

    SORT BY 和 DISTRIBUTE BY、CLUSTER BY :局部排序

    详情参见:数据排序

    6. LIMIT-约束返回行数

    示例:select * from DB表输入 limit 3

    7.  BETWEEN ... AND-约束返回行数

    注:BETWEEN ... AND 用于行区间选择的前提是有自增序列号的时候。

    说明:会选取介于两个值之间的数据范围,可用于对有序列号的数据集进行 行区间选择。 

    示例:

    select * FROM 

    DB表输入

    where `产品id`   between 2 and 3

    8. 表连接和联合

    • LEFT JION(左连接)

    • LEFT OUTER JION(左外连接)

    • LEFT SEMI JOIN(左半连接)

    • INNER JOIN 或 JOIN

    • RIGHT JION(右连接) 

    • RIGHT OUTER JION(右外连接)

    • FULL JOIN(全连接)

    • FULL OUTER JOIN(全外连接)

    • UNION

    • UNION ALL 联合

    详情参见:表连接与联合

    9. HAVING-分组后条件筛选

    根据 Having 关键字后面指定的筛选条件,将分组后不满足条件的记录筛选掉。

    示例:

    select `产品id`  FROM 

    DB表输入

    group by `产品id`  having `产品id` > 400

    10. PIVOT-行转列

    推荐您直接使用行转列算子。

    11. Stack-列转行

    推荐您直接使用列转行算子。

    12. to_json、struct函数

    4.1.6.4 及之后版本,支持 to_json、struct 函数。

    to_json 函数与 JSON 生成算子区别

    JSON生成 算子可以将一个二维表转换为一个 json 对象,或者将一个二维表转换为多行单列的二维表(每行都是json对象),但无法构建一个有普通文本+json对象+json数组的二维表;to_json 函数更加灵活。

    JSON生成 算子可与 API 输出 算子配合,先将数据生成 JSON 格式,再输出到 API ;to_json 函数可用来构建 MongoDB简道云输出 的 json 字段。

    to_json 函数

    可将数据转换为 json 格式的字符串。

    「Spark SQL」算子中输入语句结果
    SELECT to_json(named_struct('a', 1, 'b', 2));{"a":1,"b":2}
    SELECT to_json(map('a', named_struct('b', 1)));{"a":{"b":1}}
    SELECT to_json(array(map('a', 1)));[{"a":1}]
    将文本转为 json 数组:

    SELECT to_json(split('a,b,c', ',')) AS jsonArray

    ["a", "b", "c"]

    struct 函数

    用于将多个列或字段组合成一个结构化的数据对象。

    示例一:将二维表的多个字段拼成一个 json 对象

    1711528747798146.png

    示例二:通过struct、to_json、collect_list、concat_ws、concat、group by,可以将一个二维表的多个字段拼成一个 json 对象数组。具体情况参见:MongoDB输出


    附件列表


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

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持