SparkSQL常用文法

  • 文檔創建者:Roxy
  • 編輯次數:5
  • 最近更新:Nikozhan 于 2026-03-04
  •  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在线
    頁面反饋
    針對當前網頁的建議、問題反饋
    售前咨詢
    業務咨詢
    電話:0933-790886或 0989-092892
    郵箱:taiwan@fanruan.com
    頁面反饋
    *問題分類
    不能為空
    問題描述
    0/1000
    不能為空

    反馈已提交

    网络繁忙