PartiQL

PartiQL 是 DynamoDB 的 SQL 相容查詢語言。將任何表格分頁切換到 PartiQL 模式 (⌘⇧M),即可直接撰寫 SELECTINSERTUPDATEDELETE 陳述式,而不必點擊篩選膠囊

自動完成的範圍僅限於目前的表格:編輯器會建議它已建立索引的欄位與值,外加一個 $table 預留位置。它不提供表格選擇器。關於本機索引如何建立,請見 表格統計

將分頁切換到 PartiQL 模式會自動執行預設的 SELECT * FROM "table" — 這正等同於在視覺化檢視中開啟該表格。一旦你編輯了 陳述式,是否執行就由你決定:按 ⌘↩ 執行。結果會串流進來,而載入更多 會取得後續的頁面。

PartiQL 使用與 Workbench 相同的查詢計畫與成本預覽

SELECT * FROM "my-table" WHERE pk = 'USER#42' AND begins_with(sk, 'ORDER#')
PartiQL 編輯器,含一個 SELECT 陳述式、範本選單,以及下方的串流結果。
PartiQL 編輯器,含一個 SELECT 陳述式、範本選單,以及下方的串流結果。

PartiQL 不是 SQL

DynamoDB 的 PartiQL 是刻意設計的子集。編輯器會在你輸入時檢查你的查詢,並標記 DynamoDB 不會執行的結構。部分診斷會附上一鍵快速修正。常見的陷阱:

  • IN 使用方括號,而非小括號WHERE id IN ['a', 'b'],而非 ('a', 'b')。快速修正會改寫它。當清單超過 DynamoDB 的上限(分割區索引鍵 欄位 50 個值,非鍵欄位 100 個值)時,檢查器也會在伺服器拒絕之前先發出警告。
  • 沒有 LIMIT 子句 — 頁面大小是分頁控制項,而非 SQL。使用載入更多
  • 沒有 JOINGROUP BYHAVING、聚合、子查詢、UNION 或 CTE。 若需要這些,請開啟一個 Workbench 分頁 — 檢查器會指引你 過去。
  • LIKE → 函式LIKE '%foo%' 變成 contains(col, 'foo')'foo%' 變成 begins_with(col, 'foo')。會提供快速修正。
  • IS NULL / IS NOT NULLattribute_not_exists(col) / attribute_exists(col)。會提供快速修正(注意是反向對應)。
  • 以單引號表示字串字面值'value',而非 "value"。雙引號代表識別碼。

Run 按鈕旁的格式說明彈出視窗會在你需要提醒時行內列出這些。

範本與已儲存查詢

Queries 選單會將現成的陳述式放入編輯器,並對使用中表格的真實鍵與一個取樣值解析 — 因此 SELECT 範本送達時已經參照你的分割區索引鍵,而不是預留位置。用 Tab 在 標示出的空位之間移動,以填入其餘的部分。

Save 按鈕保留你會重複使用的陳述式 — 你已儲存的查詢會與範本一同存放在同一個 選單裡,可在任何表格上執行。Workbench 與 PartiQL 維護各自獨立的查詢庫,因為它們說的 是不同的查詢語言。

寫入範本

INSERT / UPDATE / DELETE 範本刻意使用合成的 DEMO-* 鍵,因此直接執行其中 一個不會意外改動到真實的列。它們的設計是依序執行 — 插入、然後更新、然後刪除同一個 demo 項目 — 而你可以編輯鍵以指向真實資料。

歷史

每個執行過的查詢都會儲存到各模式專屬的歷史中(與 Workbench 的分開)。重新開啟歷史選單,即可將先前的陳述式還原到編輯器 — 包括失敗的執行, 因此你可以修正後重試。

已更新