SQL Workbench

Workbench 是一個 SQL 撰寫分頁,能跨你的 DynamoDB 表格執行真正的 JOINGROUP BY 與聚合查詢 — 也就是 PartiQL 做不到的事。它是 DynamoDB 存取模式規則之內的 SQL:你撰寫單一個 SELECT,一個編譯器會檢查每個 關聯都透過真實的鍵或索引讀取、實體化關聯後的列,然後在其上執行你的完整 SQL。

從側邊欄的右鍵選單(新增 Workbench)、⌘⌥B 快捷鍵,或 檔案 → 新增 Workbench 開啟一個。撰寫 SQL,然後按 ⌘↩ 執行。

SELECT c.email, COUNT(*) AS orders, SUM(o.total) AS revenue
FROM orders o
JOIN customers c ON o.customerId = c.id
GROUP BY c.email
ORDER BY revenue DESC
Workbench:一個多表格 SQL JOIN,下方是關聯後的結果。
Workbench:一個多表格 SQL JOIN,下方是關聯後的結果。

它支援什麼

單一個 SELECT 陳述式,可帶有:

  • JOIN ... ON ... — 跨表格的 INNERLEFT 關聯。
  • 聚合COUNTSUMAVGMINMAX,外加 GROUP BYHAVING
  • WHEREDISTINCTCASECASTORDER BY

當聚合查詢仍在串流時,會有一個 partial 標記標示受影響的欄位 — 隨著更多頁面 到達,數字會逐步精確。

存取模式規則

DynamoDB 沒有伺服器端關聯。Workbench 編譯器強制執行 DynamoDB 做的事:每個 JOIN 的目標端屬性都必須是目標表格上的 partition key 或 GSI partition key, 因此每次查找都是真正的 query,絕不是每列隱藏的整個表格 scan。

如果某個關聯指向非鍵屬性,編輯器會將它劃上底線並解釋原因。編譯器會預先拒絕的其他 結構,並附上精確的波浪線:

  • RIGHT / FULL OUTER / CROSS 關聯與逗號關聯(僅支援 INNER / LEFT)。
  • 子查詢、CTE(WITH)、UNION / INTERSECT / EXCEPT
  • 視窗函式(OVER)、多個陳述式,以及任何不是 SELECT 的東西。

唯讀

Workbench 始終為唯讀。沒有編輯、暫存或批次刪除 — 它是一個 分析介面。執行查詢絕不會寫入你的表格。

識別碼遵循標準 SQL 的大小寫規則:未加引號的名稱以不分大小寫比對 (WHERE PLATFORM 會找到 platform);用引號或反引號包住名稱以進行精確大小寫 比對。

執行、範本與歷史

  • 執行 — 在編輯器中按 ⌘↩、按 Run 按鈕,或按 ⌘R 重新 執行。Workbench 分頁在開啟時絕不自動執行;執行永遠是刻意為之。
  • 執行到底⌘⇧↩,或從 Run 按鈕的分割選單挑選它,以串流完整的 關聯結果而非一頁。頁面上限會解除,頁面持續抵達直到查詢耗盡;停止是唯一的煞車。 對你想一次完整跑完的大型聚合很方便。
  • 範本與已儲存查詢Queries 選單收納起始範本(select-all、filter-by-key、 count-by-group,帶有可用 Tab 移動的空位),外加任何你以 Save 保留下來的查詢 — 你自訂命名的查詢,可在任何表格上重複使用。挑選其中一個會取代編輯器的內容,因此它 會完全照你儲存時的樣子執行。
  • 歷史 — 每次執行都會儲存(與 PartiQL 的歷史分開)、可搜尋, 且可還原 — 包括失敗的執行,因此你可以修正後重試。

Workbench 分頁是一份已儲存的規格 — 為它命名、從 ⌘K 重新開啟它,且它 能在重新載入後存留。你也可以匯出它關聯後的結果。

Workbench 與 Smart Table 的比較

兩者都執行同一個關聯引擎;它們是撰寫同一件事的兩種方式:

  • WorkbenchSQL 路徑 — 輸入一個查詢,取得聚合與已解析的屬性。
  • **Smart Table 是視覺化路徑** — 在畫布上繪製關聯,並像 一般表格那樣瀏覽關聯後的列。

已更新