DynamoOps
Querying

PartiQL (SQL) editor

Write SQL-compatible PartiQL with context-aware autocomplete, statement templates built from your table schema, one-click formatting and guarded write statements.

The editor

Switch the Filters panel to SQL. The editor is pre-filled with SELECT * FROM "<table>" for the current table, grows as you type and highlights keywords, functions, strings, quoted identifiers, numbers and -- comments. The statement and the last successful SELECT are remembered per tab.

The PartiQL editor with the statement kind pill and the results below.

Above the editor, a toolbar offers:

  • 📋 Templates ▾ — insert a statement built from the table’s keys and indexes.
  • ✨ Format — uppercase keywords, lowercase functions, one clause per line, indented AND/OR.
  • Clear — empty the editor.
  • Docs ↗ — open the AWS PartiQL reference in your browser.

A pill next to the editor tells you what kind of statement you have written: “SELECT · read” or “INSERT · writes data”, so you always know whether Execute will change the table.

Names with dashes need double quotes
Table and attribute names containing dashes or other special characters must be double-quoted: SELECT * FROM "my-table" WHERE "user-id" = 'u1'. String values use single quotes.

Autocomplete

Suggestions appear as you type and are scoped to where you are in the statement. Navigate with ↑ and ↓, accept with ⇥ or ↵, dismiss with Esc. Pressing space after a trigger word shows the defaults for that position.

Autocomplete suggests attributes after WHERE and AND.
After…You get
FROM, UPDATE, INTOTable names from the connection, double-quoted
SELECT, a comma in the select list, SET, BYAttributes: key attributes first with their type (S/N/B), then attributes discovered in loaded items
WHERE, AND, OR, NOTAttributes plus functions: attribute_exists, attribute_not_exists, begins_with, contains, size, attribute_type
An attribute in a conditionOperators: =, <>, !=, >, <, >=, <=, BETWEEN, IN, LIKE, CONTAINS, IS NULL, IS NOT NULL, IS MISSING, IS NOT MISSING
Anywhere elseKeywords such as SELECT, INSERT INTO, UPDATE, DELETE FROM, WHERE, ORDER BY, LIMIT

Each suggestion carries an icon and a type badge (keyword, table, pk/sk, attr, fn, op) and highlights the part you have already typed. Up to 14 suggestions are shown at a time.

Templates

Templates are generated from the open table’s schema, so the key names and index names are already correct. Placeholder values are selected after insertion so you can start typing immediately.

The Templates menu builds statements from the table’s keys and indexes.
-- Select all
SELECT * FROM "orders"

-- By partition key
SELECT * FROM "orders" WHERE "customerId" = 'value'

-- Sort key prefix
SELECT * FROM "orders" WHERE "customerId" = 'value' AND begins_with("orderDate", 'value')

-- Sort key range
SELECT * FROM "orders" WHERE "customerId" = 'value' AND "orderDate" BETWEEN 'from' AND 'to'

-- Filter: contains / attribute exists / value in list / pick columns
SELECT * FROM "orders" WHERE contains("tags", 'value')
SELECT * FROM "orders" WHERE attribute_exists("shippedAt")
SELECT * FROM "orders" WHERE "status" IN ['paid', 'shipped']
SELECT "customerId", "orderDate", "total" FROM "orders"

Executing statements

Press ⌘+↵ or click ▶ Execute. One statement is sent per run via ExecuteStatement with consumed-capacity reporting. Results appear in the same Table, JSON and Chart views, with pagination driven by DynamoDB’s next token. The run is added to Query History.

Write statements get an extra safeguard. Before an INSERT, UPDATE or DELETE runs, DynamoOps asks you to confirm that the statement modifies data in the named table. After it succeeds, a toast reports the WCU consumed and the tab’s last SELECT is re-run automatically so the grid reflects the change.

Scope of the editor
One statement per run; batch and transactional statements are not supported. Parameter placeholders are not exposed, so inline literal values. Errors from DynamoDB appear in a red box under the editor and as a toast, and are cleared on your next edit.

Examples

sql
-- Latest orders for a customer, newest first
SELECT * FROM "orders"
WHERE "customerId" = 'cus_123'
ORDER BY "orderDate" DESC

-- Items missing an attribute
SELECT "userId", "email" FROM "users"
WHERE "verifiedAt" IS MISSING

-- Fix a value with a condition
UPDATE "users"
SET "status" = 'active'
WHERE "userId" = 'usr_001' AND "status" = 'pending'

Related