Microsoft Fabric 圖形的 GQL 標準相容性

Microsoft Fabric 中的圖形實作了 ISO/IEC 39075:2024 — 資訊科技 — 資料庫語言 — GQL 標準。 本文將圖表目前的支援與標準中定義的最低符合性及可選特徵群組對應起來。 隨著新功能的加入,請持續關注最新消息。

本參考文章的目的是:

  • 企業架構師評估圖形的 GQL 覆蓋範圍。
  • 開發者從另一個符合 GQL 標準的資料庫遷移查詢。
  • 工程師驗證符合規格的主張。

如果你是從 Fabric 開始學 GQL,建議參考 GQL 語言指南

如何閱讀這篇文章

本文中的資料表使用下列慣例:

欄位名稱 說明
子條款功能識別碼 來自GQL標準的識別碼。 最低符合能力使用子條款編號(例如14.4)。 選用功能則使用附錄 D 的功能 ID(例如 G004 或 GQ15)。
功能特色 功能或特性的名稱或描述。
支援 是的 ——完全有支援。 部分 支援——部分子功能也被支援。 沒有 ——目前不支援。
注意事項 實作細節、已知限制條件,或相關文件連結。

資料模型符合性

圖實作 了標註性質圖 模型。 下表總結了資料模型的支援。

功能識別碼 功能 支持 附註
GG02 具有封閉圖型態的圖 Yes 圖使用封閉 圖類型 ,定義允許的節點類型與邊型。
GG20 明確元素類型名稱 Yes 節點與邊型別由圖型別中定義的標籤名稱識別。
GG23 可選元素類型 鍵標籤集 Yes 元素類型的鍵標籤集合是其元素類型名稱。
GH02 無方向邊緣 No 所有邊緣都是有向的。
GV11、GV12、GV24、GV31 不動產價值類型 Yes 支援類型:BOOL、、INT/INT64UINT64FLOAT64/DOUBLESTRING、。 完整型別參考請參見 GQL 值與值型別。 GV08、GV21、GV40 和 GV07 都有細微差別——詳見 GV 章節

最低符合性

GQL 標準(子條款 5.3.7)定義最低符合性為支援所有強制功能——完整語言語法與語意,且不需由可選的功能 ID 限制。 標準中詳盡的附錄H記錄了強制功能。 除了最低符合性外,實作還可宣稱支援標準附錄 D 中功能 ID 所標示的零或多個 可選功能

除了強制性功能外,第24.2款要求最低符合性要求必須包括:

  1. 至少支援一項功能 GC00(「自動圖填充」)或功能 GC04(「圖管理」)。 請參考 GC章節
  2. 聲稱符合特定 Unicode 版本(不少於 13.0.0)。 圖中的字串是 Unicode 搭配 UCS_BASIC 校對。
  3. 至少支援以下屬性價值類型: STRING (或)、VARCHAR(或BOOL)、 BOOLEAN 帶符號INTEGER(或INT)、及FLOAT

以下表格總結了圖對強制性能力的支援現況,依功能區域組織。

會話與交易管理(第7–8子條款)

子條款 功能 支持 附註
7 會話管理 No
8 交易管理 No

物件表達式(子條款 11)

子條款 功能 支持 附註
11 物件運算式 No <graph expression><binding table expression><object expression primary>CURRENT_GRAPH以及目前不支援。

查詢語句(子條款 14)

子條款 功能 支持 附註
14.3 線性查詢語句 / 巢狀查詢規範 No 巢狀查詢規格目前不支援。 支援基本的線性語句鏈結。
14.4 MATCH 陳述 Yes MATCH 搭配模式匹配。
14.4 OPTIONAL MATCH 陳述 Yes OPTIONAL MATCH 未配對變數則回傳 NULL ,而非過濾掉。
14.9 ORDER BY 以及頁數陳述 Yes ORDER BYOFFSETLIMIT
14.10 原始結果陳述 Yes 透過 RETURN
14.11 RETURN 陳述 Yes RETURN 包含投影、別名及 GROUP BY
14.12 SELECT 陳述 No 請改用 RETURN

圖型態與共通元素(第16子條款)

子條款 功能 支持 附註
16.1 AT 模式條款 No
16.3 圖型綁定表 Yes 路徑綁定與 群變數
16.4 圖型 Yes 簡單的匿名模式、命名邊模式,以及帶有子句的WHERE
16.4 節點模式 Yes (n:Label) 包含元素變數宣告、標籤表達式及屬性規範的語法。
16.4 邊緣圖案(全定向) Yes ->、, <-以及 -[]- 有向邊的圖案。
16.4 元素屬性規範 Yes {key: value} 內聯性質謂詞。
16.5 插入圖模式 No GQL INSERT 語法不支援。 圖資料是透過 資料管理載入的。
16.7 路徑模式表達 Yes 包含組成與可變長度遍歷的路徑模式
16.7 路徑串接 Yes 透過順序節點-邊緣-節點語法實現多跳模式。
16.8 標籤表達式 Yes 標籤表達 式為 & (AND)、 \| (OR)和 ! (NOT) 運算子。
16.9 路徑變數參考 Yes 路徑變數 可以綁定並回傳。
16.10 元素變數參考 Yes 節點和邊 元素變數
16.13 WHERE 子句 Yes FILTER 陳述與內列 WHERE 式的模式謂詞。
16.14 YIELD 子句 No
16.16 ORDER BY 子句 Yes ORDER BY其中 ASC/ASCENDING 和 。DESC/DESCENDING
16.17 排序規範清單 Yes 多個排序鍵帶有排序指示。

謂詞(第19子條款)

子條款 功能 支持 附註
19.3 比較謂詞 Yes 比較運算子=<><><=>=
19.4 EXISTS 述詞 Yes EXISTS 支援帶有圖型的謂詞。
19.5 NULL 述詞 Yes IS NULL 以及 IS NOT NULL
19.7 NORMALIZED 述詞 No 這個 IS [NOT] NORMALIZED 謂詞目前尚未被支援。 NORMALIZE()此功能是有支援的——詳見子條款 20.24。

價值表達式與功能(第20子條款)

子條款 功能 支持 附註
20.2 價值表達式 主要 Yes 字面量、變數參考、屬性存取以及括號內表達式。
20.3 價值規格 部分的 支援字面值與變數參考。 SESSION_USER 而動態參數規格目前不支援。
20.7 CASE 表示式 Yes CASE (簡單且可搜尋)、 COALESCE,且 NULLIF 都被支援。
20.9 聚合函數 Yes count, , , , ,sum並帶有avgminmax集合量詞。 DISTINCT/ALL
20.11 屬性參考 Yes 節點與邊的點符號 屬性存取
20.12 綁定變數參考 Yes 表達式中的變數參考。
20.20 布林值表達式 部分的 ANDORNOT 被支持。 IS [NOT] TRUE/FALSE/UNKNOWN 目前不支援測試。
20.21 數值表達式 Yes 算術運算子+-*/, 。
20.22 數值函數 部分的 支援 char_lengthCHARACTER_LENGTH Alias 目前不支援。
20.23 字串值表達式 Yes \|\| 運算子的串接。
20.24 字串函數 部分的 upper支援、、lowertrimLEFT/RIGHT、子字串函數,以及NORMALIZE Unicode 大小寫映射尚未完全支援。
20.25 位元組字串函數 No 位元組字串類型不被支援。
20.27 Datetime 價值函數 Yes 支援 CURRENT_DATETIME。 請參閱 分區日期時間值
20.29 持續時間值函數 Yes 支援持續時間值函數。

價值類型(第24.2款)

圖支援所有四種必修屬性值類型: BOOLSTRING、有符號 INTEGER (64位元)及 FLOAT其他類型。 完整型別參考請參見 GQL 值與值型別

詞彙元素(子項 21)

子條款 功能 支持 附註
21.1 名稱與變數 Yes 變數綁定 搭配前向範圍規則。 規則識別碼與分隔識別碼。
21.2 Literals Yes 布林值、整數、浮點數、字串(帶有 C 風格與 SQL 風格的逃逸)以及清單的NULL
21.3 標記、分隔符、識別碼 Yes 標準的GQL詞彙規則。

可選功能相容性

功能 ID 用來識別可選的功能。 它以「G」開頭,接著是字母組合和數字。 以下章節依群組組織特色。

G — 圖型特徵

功能識別碼 功能 支持 附註
G002 異邊匹配模式 No
G003 明確 REPEATABLE ELEMENTS 關鍵字 部分的 預設的配對模式行為是可重複的元素,但不支援明確 REPEATABLE ELEMENTS 關鍵字。
G004 路徑變數 Yes 支援路徑變數綁定
G005 路徑搜尋前綴在路徑模式中 No
G006 圖模式 KEEP 子句:路徑模式前綴 No
G007 圖模式 KEEP 子句:路徑搜尋前綴 No
G010 明確 WALK 關鍵字 Yes WALK 允許節點與邊重複出現匹配路徑。
G011 進階路徑模式: TRAIL Yes TRAIL 防止重複邊界穿越。
G012 進階路徑模式: SIMPLE Yes SIMPLE 防止重複節點出現在匹配路徑中。
G013 進階路徑模式: ACYCLIC Yes ACYCLIC 防止匹配路徑的循環。
G014 明確 PATH/PATHS 的關鍵字 No
G015 全路徑搜尋:明確 ALL 關鍵字 部分的 所有路徑搜尋行為皆可使用,但不支援明確 ALL 的關鍵字語法。
G016 任意路徑搜尋 No
G017 所有最短路徑搜尋 No
G018 任意最短路徑搜尋 No
G019 計數的最短路徑搜尋 No
G020 計算最短群組搜尋 No
G030 路徑多重集合交替 No
G031 路徑多重集合交替:可變長度路徑運算元 No
G032 路徑模式聯集 No
G033 路徑模式聯集:可變長度路徑運算元 No
G035 量化路徑 Yes 界可變長度模式{m,n}語法。
G036 量化邊 No 僅支援 量化路徑
G037 受質疑的路徑 No
G038 括號內路徑模式表達式 No
G039 簡化路徑模式表達式:完全預設 No
G041 非局部元素模式謂詞 No 非局部謂詞,指目前模式元素外的參考變數目前不被支援。 支援節點與邊填充中的局部 WHERE 謂詞。
G043 完整的全邊圖案 Yes 全指向邊圖案,且 -><-
G044 基本的簡略邊型 Yes 像 和 ()->()這樣的速記模式()-()
G045 完整縮短邊型 Yes 任何方向的簡短 邊緣圖案捷徑
G046 鬆弛拓撲一致性:相鄰頂點圖案 No
G047 鬆弛拓撲一致性:簡潔邊型態 No
G048 括號內路徑模式:子路徑變數宣告 No
G049 括號內路徑模式:路徑模式前綴 No
G050 括號內路徑模式: WHERE 子句 No
G051 括號內路徑模式:非區域謂詞 No
G060 界限圖形模式量詞 Yes {m,n}{m}, 語 {,n} 法。 最大上限為8。
G061 無界圖形模式量詞 No 無界量詞({m,}*+)目前不支援。 有界量詞的最大上限為 8。
G074 標籤表達式:通配標籤 No 萬用卡目前不支援。
G080 簡化路徑模式表達式:基本預設 No
G081 簡化路徑模式表達式:全覆蓋 No
G082 簡化路徑模式表達式:基本覆寫 No
G100 ELEMENT_ID 函數 Yes ELEMENT_ID 回傳節點或邊緣元素的唯一識別碼。
G110 IS DIRECTED 述詞 No
G111 IS LABELED 述詞 No
G112 IS SOURCE 以及 IS DESTINATION 謂詞 No
G113 ALL_DIFFERENT 述詞 No
G114 SAME 述詞 No
G115 PROPERTY_EXISTS 述詞 No

GA — 一般特徵

功能識別碼 功能 支持 附註
GA01 IEEE 754 浮點運算 Yes FLOAT64 採用 IEEE 754 二進位 64 表示法。 請參閱 近似數值型別查詢 API 值編碼
GA03 零點的顯式排序 No NULL 排序為 中 ORDER BY最小值,但目前不支援明確 NULLS FIRST/NULLS LAST 的關鍵字。
GA04 普遍比較 No
GA05 鑄造規格 部分的 支援 CAST(value AS target_type)。 目前不支援 Unicode 類型鑄造。 請參見類型轉換。
GA06 值類型述詞 Yes 支援價值型別謂詞。
GA07 依捨棄綁定變數排序 No
GA08 帶有診斷紀錄的 GQL 狀態物件 部分的 支援帶有 GQLSTATUS 碼、訊息、診斷記錄及原因鏈的狀態物件。 請參閱狀態碼參考及查詢 API 狀態物件。 完整的GQL狀態代碼覆蓋尚未完成。
GA09 路徑比較 No

GB — 詞彙特徵

功能識別碼 功能 支持 附註
GB01 長識別碼 No
GB02 雙減號留言 Yes -- 評論。
GB03 雙固體留言 Yes ///* */ 言與封鎖留言。

GC — 目錄管理功能

功能識別碼 功能 支持 附註
GC01 圖結構管理 No
GC02 圖結構管理: IF [NOT] EXISTS No
GC03 圖類型: IF [NOT] EXISTS No
GC04 圖管理 部分的 CREATE GRAPH 在封閉圖中支援 。 GQL 不支援 DROP GRAPH。 改用 Fabric UI 或 REST API
GC05 圖管理: IF [NOT] EXISTS No

GD — 資料修改功能

功能識別碼 功能 支持 附註
GD01 可更新的圖表 No 透過資料管理載入與刷新圖表資料,而非透過 GQL INSERT/SET/DELETE 語句。
GD02 圖標籤集變更 No
GD03 DELETE 陳述:子查詢支援 No
GD04 DELETE 陳述:簡單表達式支援 No

GE — 表達特徵

功能識別碼 功能 支持 附註
GE01 圖參考值表達式 No
GE02 綁定表參考值表達式 No
GE03 變數在表達式中被束縛 Yes LET 變數綁定的陳述。
GE04 圖參數 No
GE05 綁定表參數 No
GE06 路徑值建構 Yes PATH [node, edge, node] 建構路徑值的建構器。
GE07 布林值 XOR Yes XOR 運算子的排斥析取。
GE08 參考參數 No
GE09 水平彙總 Yes 從變長模式中對群組列表變數進行水平聚合

GF — 功能特徵

功能識別碼 功能 支持 附註
GF01 增強的數值函數 No abs、、modfloorceilsqrt以及目前不支援。
GF02 三角函數 No
GF03 對數函數 No
GF04 增強路徑函數 Yes elements(path) path_length(path) nodes(path) edges(path)、以及 都被支持。
GF05 多字元 TRIM 函數 No
GF06 顯式 TRIM 函數 No TRIM 使用 trim specification 時,語法(例如 TRIM('_' FROM '_x'))不支援。 Basic trim(string) 是強制支援的功能。
GF07 位元組字串 TRIM 函數 No 位元組字串類型不被支援。
GF10 進階聚合函數:一般集合函數 部分的 collect_list collect_any並且受到支持。 stddev_popstddev_samp, , product 目前不支援。
GF11 進階聚合函數:二元集合函數 No percentile_cont 目前 percentile_disc 沒有支援。
GF12 CARDINALITY 函數 No 請改用 size(list)
GF13 SIZE 函數 Yes size(list) 回傳列表中元素的數量。
GF20 排序鍵中的聚合函式 No

GG — 圖形型特徵

功能識別碼 功能 支持 附註
GG01 具有開圖類型的圖 No 僅支援封閉圖類型。
GG02 具有封閉圖型態的圖 Yes 預設值。 圖類型定義允許的節點類型與邊類型。 參見 GQL 圖形類型
GG03 圖型內嵌規範 Yes 節點與邊的類型會在圖型別定義中內嵌指定。
GG04 圖型態類似圖 No
GG05 來自圖源的圖形 No
GG20 明確元素類型名稱 Yes 標籤作為元素類型名稱。
GG21 明確元素類型 鍵標籤集 No
GG22 元素類型 鍵 標籤 集合推論 No
GG23 可選元素類型 鍵標籤集 Yes 鍵標籤集合是元素型別名稱。
GG24 鬆弛結構一致性 No
GG25 邊緣類型的鬆弛鍵標籤集唯一性 No
GG26 放寬屬性值類型一致性 No

GL — 字面特徵

功能識別碼 功能 支持 附註
GL01 十六進位字面 No
GL02 八進位字面 No
GL03 二元字面值 No
GL04 無後綴的通用符號精確數字 Yes 整數字面值如 123456。 請參閱 精確的數字類型
GL05 確切編號後綴 Yes 整數文字加上型別後綴。
GL06 科學記號中的精確數字後綴 No
GL07 常見符號中的近似數字,後綴 Yes 例如: 12.45f 。 請參見 近似數值類型
GL08 科學記號中的近似數字後綴 Yes 科學符號加後綴用於浮點數值。
GL09 可選的浮點數後綴 No
GL10 可選雙數字後綴 No
GL11 退出角色逃脫 No
GL12 SQL datetime 格式 Yes ISO 8601 格式透過 ZONED_DATETIME('...')。 請參閱 分區日期時間值

GP — 手術特徵

CALL支援內嵌程序陳述(GP01)。 其他程序功能(GP02–GP18)目前不支援,包括 CALL 命名程序、程序與本地變數定義及程序參數。

GQ — 查詢組合功能

功能識別碼 功能 支持 附註
GQ01 USE 圖子句 No
GQ02 綜合查詢: OTHERWISE No
GQ03 綜合查詢: UNION 部分的 支援 UNION ALLUNION DISTINCT 目前不支援。
GQ04 綜合查詢: EXCEPT DISTINCT No
GQ05 綜合查詢: EXCEPT ALL No
GQ06 綜合查詢: INTERSECT DISTINCT No
GQ07 綜合查詢: INTERSECT ALL No
GQ08 FILTER 陳述 Yes FILTER關鍵字。WHERE
GQ09 LET 陳述 Yes LET 對於計算變數。
GQ10 FOR 陳述:清單值支援 Yes 有清單值支援的正規 FOR 語句。
GQ11 FOR 陳述: WITH ORDINALITY No
GQ12 ORDER BY 頁數陳述: OFFSET 條款 Yes OFFSET (也別名為 SKIP)。
GQ13 ORDER BY 頁數陳述: LIMIT 條款 Yes LIMIT
GQ14 排序鍵中的複雜表達式 No
GQ15 GROUP BY 子句 Yes RETURN 其中 GROUP BY
GQ16 排序鍵中的預投影別名 No
GQ17 元素群變數運算 Yes 透過 水平聚合來支持。
GQ18 純量子查詢 No 目前不支援純量子查詢。
GQ19 圖型子 YIELD No
GQ20 進階線性合成為 NEXT No
GQ21 OPTIONAL:多重 MATCH 陳述 Yes 支援 OPTIONAL MATCH
GQ22 EXISTS 謂詞:多重 MATCH 陳述 No
GQ23 FOR 陳述:綁定表支援 No
GQ24 FOR 陳述: WITH OFFSET No

GS — 會話管理功能

GQL 會話管理功能(GS01–GS16)目前不支援。

GT — 交易管理功能

GQL 交易管理功能(GT01–GT03)目前不支援。

GV — 價值類型特徵

功能識別碼 功能 支持 附註
GV01 8位元無號整數 No
GV02 8位元有號整數 No
GV03 16 位元無符號整數 No
GV04 16位元有號整數 No
GV05 小型無符號整數 No
GV06 32位元無號整數 No
GV07 32位元有號整數 No INT32 不支援作為 GQL 值型別。
GV08 正則無符號整數 Yes UINT 類型。
GV09 指定整數精度 No
GV10 大型無號整數 No
GV11 64 位元無符號整數 Yes UINT64
GV12 64 位元有號整數 Yes INT64
GV13 128 位元無符號整數 No
GV14 128 位元有號整數 No
GV15 256 位元無符號整數 No
GV16 256 位元有號整數 No
GV17 十進位數字 No
GV18 小帶號整數 No
GV19 大號正數 No
GV20 16 位元浮點數 No
GV21 32 位元浮點數 No FLOAT 在圖別名 FLOAT64 (64 位元)中,不是 FLOAT32。 請參見 近似數值類型
GV22 指定浮點數精度 No
GV23 浮點數型別名稱同義詞 Yes DOUBLEFLOAT和 ,並且 FLOAT64 都指定相同的類型。
GV24 64 位元浮點數 Yes DOUBLE / FLOAT64
GV25 128 位元浮點數 No
GV26 256 位元浮點數 No
GV30 指定字串最小長度 No
GV31 指定字串最大長度 Yes STRING 類型。
GV32 指定字串固定長度 No
GV35 位元組字串類型 No
GV36 指定位元組串最小長度 No
GV37 指定位元組串最大長度 No
GV38 指定位元組串固定長度 No
GV39 時間類型:日期、當地日期時間及當地時間 No 不支援 DATELOCAL DATETIMELOCAL TIME。 僅支援 ZONED DATETIME
GV40 時間類型:分區日期時間與分區時間 部分的 支援 ZONED DATETIMEZONED TIME 目前不支援。
GV41 時間類型:持續時間 Yes 支援持續時間類型。
GV45 記錄類型 Yes 支援記錄建構子語法。
GV46 封閉紀錄類型 No
GV47 開放紀錄類型 Yes 支援開放紀錄類型。
GV48 巢狀記錄類型 No
GV50 列表值類型 Yes LIST<element_type>。 支援巢狀列表類型(LIST<LIST<type>>)。 清單不能包含混合型別。
GV55 路徑值類型 Yes PATH 輸入匹配路徑。
GV60 圖參考值類型 No
GV61 綁定表參考值類型 No
GV65 動態聯集類型 No
GV66 開放動態聯集類型 Yes ANY 支援 value 類型。
GV67 封閉動態聯集類型 No
GV68 動態財產價值類型 No
GV70 非物質值類型 Yes NULL 以及 NOTHING 類型。
GV71 非物質價值型別:null 型別 Yes NULL 是每個可空值類型中的成員。
GV72 非物質價值類型:空類型 Yes NOTHING / NULL NOT NULL
GV90 明確值類型空可性 Yes NOT NULL 所有類型都支援語法。

GH — 其他特色

功能識別碼 功能 支持 附註
GH01 外部物件參考 No
GH02 無向邊緣圖案 No 圖需要有向邊。 任意有向模式(-[]-)根據連接性匹配,無論方向為何。

尚未支援的功能

以下這些顯著功能目前尚未支援。 完整清單請參閱表格中標記 為「否」 的列。

  • SELECT陳述(子條款 14.12)——改用RETURN
  • NEXT 進階線性合成關鍵字(GQ20)
  • UNION DISTINCT 聲明(GQ03)—— UNION ALL 已獲得支持
  • 無界圖型量詞: {m,}*+ (G061)
  • 所有最短、任意及計數路徑搜尋(G016–G020)
  • 純量子查詢(GQ18)
  • 增強的數值、三角函數與對數函數(GF01–GF03)
  • EXCEPT 以及 INTERSECT 語句(GQ04–GQ07)
  • OTHERWISE 陳述(GQ02)
  • GQL INSERT/SET/DELETE語句(GD01)— 改用資料管理
  • 會話管理與交易指令(子條款 7–8)