SQL Workbench

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

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

編輯器會依游標處的 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 的目標端屬性都必須是目標表格上的分割區索引鍵或 分割區索引鍵, 因此每次查找都是真正的 query,絕不是每列隱藏的整個表格

如果某個關聯指向非鍵屬性,編輯器會將它劃上底線並解釋原因。編譯器的其他拒絕情形 也會以精確的驗證波浪線呈現。Workbench 不提供快速修正:

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

唯讀

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

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

預覽查詢成本

當有查詢計畫可用時,預覽會指出這是 Scan 還是 Query 以及使用的索引;RCU 估計值 只在表格中繼資料支援時才會出現。

這個狀態列出現在 Workbench 與 PartiQL 中,而不是視覺化的篩選列。空白的 SQL、編譯 失敗、DML,或無法解析的 PartiQL 都沒有查詢計畫,因此不會出現成本列。

一般的分割區 Query 會顯示「成本取決於符合的項目」而沒有 RCU。點讀取與已知大小的 Scan 在缺少支援的 DescribeTable 中繼資料時,同樣不會產生 RCU。

點讀取仍會顯示「≈1 個項目」。帶有項目數量的 Scan 可以顯示表格層級的估計值,但 計算它的 RCU 需要以位元組為單位的表格大小。兩個數值都缺少時,Scan 會顯示 「大小未知」。

Scan 的估計使用 DynamoDB 定期重新整理的表格數字,而非即時值。點讀取分支以強一致性 定價;Scan 分支則以最終一致性定價。

Workbench 與 PartiQL 執行的都是最終一致性讀取。因此點讀取的估計值可能是該請求實際 成本的兩倍。請把每個數字都當成執行前的提示,而不是帳單。

執行、範本與歷史

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

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

Workbench 與 Smart Table 的比較

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

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

已更新