PartiQL para DynamoDB con ejemplos
PartiQL es un lenguaje de consulta compatible con SQL para DynamoDB. Es más amable que la API en bruto para el trabajo ad hoc —pero se ejecuta sobre el mismo motor, así que se aplican las mismas reglas de clave (y los mismos costes) por debajo de la sintaxis familiar.
SELECT
SELECT * FROM "AppData"
WHERE "PK" = 'CUSTOMER#42' AND begins_with("SK", 'ORDER#')Filtra por la clave de partición y esto es un Query. Omite la clave de
partición y PartiQL ejecuta en silencio un Scan de tabla
completa —el mismo footgun, solo que oculto tras un SELECT *.
INSERT
INSERT INTO "AppData" VALUE {'PK': 'CUSTOMER#42', 'SK': 'PROFILE', 'plan': 'pro'}UPDATE
UPDATE "AppData" SET "plan" = 'enterprise'
WHERE "PK" = 'CUSTOMER#42' AND "SK" = 'PROFILE'DELETE
DELETE FROM "AppData"
WHERE "PK" = 'CUSTOMER#42' AND "SK" = 'ORDER#2026-001'Consultar un índice
Usa el nombre del índice en la cláusula FROM:
SELECT * FROM "AppData"."GSI1" WHERE "GSI1PK" = 'STATUS#OPEN'WHERE también admite IN, contains() y begins_with():
SELECT * FROM "AppData"
WHERE "PK" = 'CUSTOMER#42' AND "SK" IN ['ORDER#1', 'ORDER#2']Sentencias parametrizadas
Usa marcadores de posición ? en lugar de incrustar los valores —evita los
problemas de comillas/inyección y deja que el SDK marshalle los tipos por ti:
SELECT * FROM "AppData" WHERE "PK" = ? AND begins_with("SK", ?)Pasa Parameters: [{ S: 'CUSTOMER#42' }, { S: 'ORDER#' }] a ExecuteStatement.
Lotes y transacciones
BatchExecuteStatement— hasta 25 sentencias en un solo viaje de ida y vuelta. Más rápido, pero sin atomicidad entre Items (cada una tiene éxito o falla por su cuenta).ExecuteTransaction— hasta 100 sentencias, todo o nada. Úsalo cuando varias escrituras deban confirmarse juntas.
El footgun de PartiQL
PartiQL parece SQL pero se ejecuta sobre el motor de DynamoDB, así que los hábitos de SQL salen mal:
- Un único
UPDATE/DELETEdebe apuntar a un Item por su clave primaria completa —no hay unUPDATE … WHERE status = 'x'de actualización masiva (itera con un lote en su lugar). - Sin
JOIN, sinGROUP BY, sin agregados (COUNT/SUM/AVG). Consulta PartiQL frente a SQL. - Omitir la clave de partición convierte cualquier
SELECTen un Scan de tabla completa —limitado solo por tu factura.
Cuando de verdad necesitas un JOIN, un GROUP BY o un agregado, el SQL Workbench
de DynoTable los ejecuta en el lado del cliente sobre las filas que has extraído —el
SQL que PartiQL no sabe hablar, dentro de las reglas de patrones de acceso de
DynamoDB.
PartiQL no cambia los tipos de datos subyacentes —los valores siguen viajando por el cable como DynamoDB-JSON, que puedes inspeccionar con el conversor.
Prueba DynoTable para ejecutar sentencias PartiQL con autocompletado y ver las unidades de lectura que consume cada una.