全部產品
Search
文件中心

Dataphin:API SQL指令碼編輯說明

更新時間:Nov 19, 2025

本文為您介紹查詢類型和操作類型的指令碼編輯說明。

Get/List(查詢類型)

  • 支援的查詢模式:

    • 支援同一資料來源下的單表查詢、多表關聯查詢(Join)和巢狀查詢(子查詢)。

    • 支援進階SQL模式(MyBatis風格)。

    • 支援在Select地區配置參數,例如:SELECT id_card, SUM(CASE WHEN id_card LIKE ${id_card} THEN 1 ELSE 0 END) AS proj_score FROM table WHERE c LIKE ${id_card} GROUP BY id_card

  • 不支援的文法與用法:

    • 多條SQL查詢語句:不支援在單個API中執行多條SQL(如:SELECT ...; SELECT ...;)。

    • 非DQL語句:在List和Get操作類型API中,不支援INSERT、UPDATE、CREATE和DELETE等非DQL文法。

    • SELECT *:不支援SELECT *查詢,查詢時必須明確指定查詢的列。

    • 列名首碼:若列名帶表首碼(例如:t.name),必須使用別名作為返回參數名SELECT t.name AS name FROM table

    • 彙總函式:使用SUM()COUNT()MAX()MIN() 等彙總函式時,必須使用別名作為返回參數名。例如:SELECT SUM(num) AS total_num FROM table

    • 分頁語句:不支援在SQL中使用分頁語句,需通過分頁參數實現分頁。

      說明
      • 當資料來源為SAP HANA,需要在SQL中使用分頁語句,定義分頁參數實現分頁。

      • 當資料來源為TDengine,需要在SQL中使用分頁語句,若不傳入分頁參數(即PageStart、PageSize),則返回全量資料;若傳入分頁參數,則根據定義的分頁參數返回資料。

  • 動態欄位查詢(進階SQL模式),支援通過參數動態指定返回欄位,並將參數寫在查詢語句內。

    • 參數格式:必須以var_cols開頭,格式為:var_cols_xxx(如var_col_args),如SELECT id, ${var_cols_args} FROM table1

    • 返回參數:返回參數中需要將所有可支援的動態查詢的欄位添加為返回參數。

    • 調用API:調用API時,在動態參數中傳入需要查詢的欄位即可,未傳入的欄位在返回結果中為null值。例如:var_col_args=name,age,dept

    • 實際執行:SQL語句為:SELECT id, name, age, dept FROM table1

  • SQL模式為進階SQL時,在Mybatis SQL中,比較子需要用逸出字元。

    原符號

    轉義符號

    <

    &lt;

    >

    &gt;

    <=

    &lt;=

    >=

    &gt;=

  • 資料來源特異性限制:

    資料來源

    限制說明

    TDengine

    • 必須在SQL中使用LIMIT/OFFSET實現分頁。

    • 不支援選擇性參數。

    SAP HANA

    • 不支援分頁,即傳入PageStart、PageSize參數不生效。

    • 不支援選擇性參數。

    Elasticsearch

    • 使用ScrollId實現分頁查詢。當不指定ScrollId時,最多隻能查詢前10000條資料,調用設定分頁PageStart和PageSize時,請注意不要查詢超過10000條資料,否則調用會失敗。

      例如:PageStart設定為9998,PageSize最大隻能設定為2。

    • 如果要查詢10000條以後的資料,需要使用where語句指定scrollId,可以在API開發時指定一個請求參數scrollId,查詢時傳入對應的scrollId值。

      說明

      指定了scrollId值查詢時,就不能使用分頁,即PageStart和PageSize不能傳值,否則調用失敗。

    • where語句中只支援scrollId欄位作為條件查詢,其餘欄位不生效。

      例如:select a from table where scrollId=${scrollId}

    • 不支援子查詢語句。

    HBase

    • 僅支援單條rowkey查詢,其中rowkey是必填的請求參數,查詢文法為:

      select info1.id as name from table where rowkey = ${rowkey}
    • 不支援Order by排序文法。

    • 不支援分頁,即傳入PageStart、PageSize參數不生效。

    • 不支援Join語句。

    PostgreSQL

    不支援跨Schema查詢,僅限當前串連的Schema查詢資料。

    Impala

    不支援進階SQL模式(MyBatis風格)。

    Lindorm

    不支援JOIN語句。

Create/Update/Delete(操作類型)

  • 支援的SQL模式:

    • 基礎SQL模式:支援標準INSERTUPDATEDELETE語句,使用${param}預留位置傳參,適用於簡單情境。

    • 進階SQL模式(MyBatis 風格):可用於條件判斷、動態欄位、大量操作等複雜邏輯,支援的標籤如下:

      <if>、<choose>、<when>、<otherwise>、<trim>、<foreach>
  • 進階SQL模式且是批量處理時,每條資料會單獨執行,效能較差。因此在批量增刪改介面中,請盡量避免使用進階模式。

  • 若SQL中包含in條件參數,則每條資料會單獨執行,效能較差。請盡量避免使用in條件參數。

  • 僅PostgreSQL支援RETURNING文法。