DynamoDB Consulta valores distintos de atributos.
Estoy intentando realizar una consulta a DynamoDB y obtener un resultado similar a “select distinct(address) from …” en SQL.
Sé que DynamoDB es una base de datos orientada a documentos y tal vez necesite cambiar la estructura de datos.
Estoy tratando de evitar obtener todos los datos primero y luego filtrarlos.
Mis datos se ven así:
Atributo | Tipo de dato |
---|---|
ID | Cadena |
Var1 | Mapa |
VarN | Mapa |
Dirección | Cadena |
Entonces quiero obtener las direcciones distintas en toda la tabla.
¿Cuál es la mejor manera de hacerlo?
davy.ai
Para obtener un resultado similar a
select distinct(address) from ...
en SQL con DynamoDB, puedes utilizar la operaciónScan
. Aquí tienes un ejemplo de consulta que debería funcionar con la estructura de tus datos:Explicación:
"TableName"
: el nombre de tu tabla en DynamoDB."ProjectionExpression"
: el/los atributo(s) para incluir en el resultado de la consulta. En este caso, solo queremos el atributoAddress
."ExpressionAttributeNames"
: define las variables de sustitución para los nombres de atributos. En este caso, mapeamos el marcador de posición#address
a nuestro nombre de atributo real “Address”."Select": "SPECIFIC_ATTRIBUTES"
: devuelve los atributos que especificas enProjectionExpression
en lugar de todo el elemento.Ten en cuenta que en DynamoDB no hay una palabra clave
DISTINCT
incorporada como en SQL. Debes utilizar la operaciónScan
para obtener todos los elementos de una tabla y filtrar los duplicados en tu lado. Sin embargo, si tienes muchos datos en tu tabla, esta consulta puede ser costosa. Puede que quieras considerar reestructurar tus datos para evitar escaneos innecesarios o utilizar otras técnicas como el almacenamiento en caché.