Herramienta gratuita

Generador de consultas de DynamoDB

Compón la solicitud Query o Scan completa —tabla, índice, condición de clave, filtro, proyección, Limit, orden de clasificación, lecturas consistentes y paginación— y copia un programa ejecutable para AWS SDK v3, CLI o boto3, o la sentencia PartiQL.

Compón tu solicitud
Opciones de la solicitud
Código ejecutable
import { DynamoDBClient, QueryCommand } from "@aws-sdk/client-dynamodb";

const client = new DynamoDBClient({});

const params = {
  "TableName": "Orders",
  "KeyConditionExpression": "#hashKey = :hashKeyValue AND begins_with(#rangeKey, :rangeKeyValue)",
  "ExpressionAttributeNames": {
    "#hashKey": "pk",
    "#rangeKey": "sk"
  },
  "ExpressionAttributeValues": {
    ":hashKeyValue": {
      "S": "USER#123"
    },
    ":rangeKeyValue": {
      "S": "ORDER#"
    }
  },
  "Limit": 25
};

const items = [];
let lastEvaluatedKey;
do {
  const page = await client.send(
    new QueryCommand({ ...params, ExclusiveStartKey: lastEvaluatedKey })
  );
  items.push(...(page.Items ?? []));
  lastEvaluatedKey = page.LastEvaluatedKey;
} while (lastEvaluatedKey);

console.log(items);

Del patrón de acceso a la solicitud ejecutable

La expresión rara vez es todo el trabajo. Una Query de producción también decide qué índice leer, cuántos Items evaluar por solicitud, en qué dirección corre la clave de ordenación, si la lectura debe ser fuertemente consistente y qué ocurre cuando la respuesta vuelve con un LastEvaluatedKey. Esos parámetros a nivel de solicitud viven fuera de la cadena de la expresión, y ahí es donde suelen fallar los fragmentos copiados.

Este generador trata la solicitud como la unidad de trabajo. Compones la condición de clave, el filtro y la proyección sobre el mismo modelo tipado y a prueba de palabras reservadas que usa nuestro Generador de expresiones, y ajustas al lado las opciones de la solicitud. La salida no es un fragmento: es un programa que puedes ejecutar —imports, configuración del cliente, la propia llamada y, cuando activas «Obtener todas las páginas», el bucle de ExclusiveStartKey que agota todas las páginas de resultados.

El código generado es honesto con cada destino. La AWS CLI pagina por sí sola, así que su Limit se convierte en --page-size y una ejecución de una sola solicitud recibe --no-paginate; PartiQL rechaza los parámetros que pertenecen a la API ExecuteStatement y no a la sentencia; y una Query descendente se convierte en ORDER BY sobre tu clave de ordenación cuando eso es expresable.

¿Solo necesitas la expresión en sí —una expresión de condición, de filtro o de actualización con sus mapas de marcadores, para cualquiera de las seis operaciones? El Generador de expresiones de DynamoDB está hecho exactamente para eso. ¿Aún estás decidiendo entre las dos operaciones de lectura? Query frente a Scan desglosa cuándo conviene cada una.

Preguntas frecuentes

¿En qué se diferencia del Generador de expresiones de DynamoDB?

Se reparten el problema a propósito. El Generador de expresiones se centra en la sintaxis de las expresiones —condiciones de clave, filtros, expresiones de actualización y de condición con sus mapas ExpressionAttributeNames/Values— en las seis operaciones, y emite el comando a secas. El Generador de consultas se centra en la solicitud Query o Scan completa: tabla e índice, condición de clave, filtro, proyección, más los parámetros a nivel de solicitud que la herramienta de expresiones no expone (Limit, orden de clasificación, ConsistentRead, ExclusiveStartKey), y emite un programa ejecutable con la configuración del cliente y un bucle de paginación opcional.

¿Qué limita realmente Limit en una Query o un Scan?

Limit acota cuántos Items evalúa DynamoDB por solicitud, no cuántos Items coincidentes recibes. Los filtros se aplican después de la lectura, así que una Query con Limit 25 y una FilterExpression puede devolver menos de 25 Items —o ninguno— y aun así consumir la capacidad de lectura de todo lo evaluado, y la paginación continúa desde LastEvaluatedKey. En la AWS CLI, que pagina automáticamente, el mismo parámetro se establece con --page-size.

¿Cómo funciona la paginación de DynamoDB (LastEvaluatedKey)?

Una respuesta de Query o Scan con más datos incluye un LastEvaluatedKey: la clave principal del último Item leído. Lo devuelves como ExclusiveStartKey en la siguiente solicitud y repites hasta que llegue una respuesta sin él. Activa «Obtener todas las páginas» y los programas generados para SDK v3 y boto3 incluyen exactamente ese bucle; la AWS CLI recorre las páginas por sí sola salvo que pases --no-paginate.

¿Cuándo puedo usar una lectura fuertemente consistente?

ConsistentRead funciona en tablas base e índices secundarios locales, pero no en índices secundarios globales: una Query contra un GSI con ConsistentRead activado se rechaza. Una lectura fuertemente consistente también consume el doble de capacidad de lectura que una eventualmente consistente. Es un parámetro de la API y no parte del texto de la sentencia PartiQL, por eso la pestaña PartiQL la rechaza con honestidad.

¿Se sube a algún sitio lo que introduzco aquí?

No. Esta es una página estática: la solicitud se compone y el código se genera íntegramente en tu navegador, así que los nombres de tabla, los valores de clave y los filtros nunca llegan a un servidor. «Copiar enlace» empaqueta toda la solicitud en la URL: compartir ese enlace es la única forma de que algo que escribiste salga de la página, y está en tus manos.

Trabaja con DynamoDB sin la Consola

DynoTable es un cliente de escritorio rápido para DynamoDB: explora tablas, ejecuta consultas estilo SQL y edita Items localmente.