PartiQL

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

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

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 的上限(partition-key 欄位 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 範本送達時已經參照你的 partition key,而不是預留位置。用 Tab 在 標示出的空位之間移動,以填入其餘的部分。

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

寫入範本

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

歷史

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

已更新