Consulta de sus datos - Base de datos Amazon Quantum Ledger (AmazonQLDB)

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Consulta de sus datos

importante

Aviso de fin de soporte: los clientes actuales podrán usar Amazon QLDB hasta que finalice el soporte, el 31 de julio de 2025. Para obtener más información, consulte Migración de un Amazon QLDB Ledger a Amazon Aurora SQL Postgre.

La vista de usuario devuelve únicamente la última revisión no eliminada de sus datos de usuario. Esta es la vista predeterminada en AmazonQLDB. Esto significa que no se necesitan calificadores especiales si desea consultar solo sus datos.

Para obtener más información sobre la sintaxis y los parámetros de los siguientes ejemplos de consultas, consulte SELECT la referencia de Amazon QLDB PartiQL.

Consultas básicas

Las consultas básicas de SELECT devuelven los documentos que ha insertado en la tabla.

aviso

Cuando ejecutas una consulta QLDB sin una búsqueda indexada, se invoca un escaneo completo de la tabla. PartiQL admite este tipo de consultas porque es SQL compatible. Sin embargo, no ejecute escaneos de tablas para casos de uso de producción enQLDB. Los escaneos de tablas pueden provocar problemas de rendimiento en tablas grandes, como conflictos de concurrencia y tiempos de espera de las transacciones.

Para evitar el escaneado de tablas, debe ejecutar las instrucciones con una cláusula de predicado WHERE usando un operador de igualdad en un campo indexado o en un ID de documento, por ejemplo WHERE indexedField = 123 o WHERE indexedField IN (456, 789). Para obtener más información, consulte Optimización del rendimiento de las consultas.

Las siguientes consultas muestran los resultados de los documentos de registro del vehículo que insertó previamente en Crear tablas con índices e insertar documentos. El orden de los resultados no es específico y puede variar para cada consulta SELECT. No debes basarte en el orden de los resultados para realizar ninguna consultaQLDB.

SELECT * FROM VehicleRegistration WHERE LicensePlateNumber IN ('LEWISR261LL', 'CA762X')
{ VIN: "1N4AL11D75C109151", LicensePlateNumber: "LEWISR261LL", State: "WA", City: "Seattle", PendingPenaltyTicketAmount: 90.25, ValidFromDate: 2017-08-21T, ValidToDate: 2020-05-11T, Owners: { PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" }, SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }] } }, { VIN: "KM8SRDHF6EU074761", LicensePlateNumber: "CA762X", State: "WA", City: "Kent", PendingPenaltyTicketAmount: 130.75, ValidFromDate: 2017-09-14T, ValidToDate: 2020-06-25T, Owners: { PrimaryOwner: { PersonId: "IN7MvYtUjkp1GMZu0F6CG9" }, SecondaryOwners: [] } }
SELECT * FROM Vehicle WHERE VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{ VIN: "1N4AL11D75C109151", Type: "Sedan", Year: 2011, Make: "Audi", Model: "A5", Color: "Silver" }, { VIN: "KM8SRDHF6EU074761", Type: "Sedan", Year: 2015, Make: "Tesla", Model: "Model S", Color: "Blue" }
importante

En PartiQL, se utilizan comillas simples para indicar cadenas en el lenguaje de manipulación de datos (DML) o en las declaraciones de consulta. Sin embargo, la QLDB consola y el QLDB shell devuelven los resultados de la consulta en formato de texto de Amazon Ion, por lo que las cadenas aparecen entre comillas dobles.

Esta sintaxis permite que el lenguaje de consultas PartiQL mantenga la SQL compatibilidad y que el formato de texto Amazon Ion mantenga JSON la compatibilidad.

Proyecciones y filtros

Puede hacer proyecciones (dirigidas SELECT) y otros filtros estándar (cláusulas WHERE). La siguiente consulta devuelve un subconjunto de campos de documentos de la tabla VehicleRegistration. Filtra los vehículos según los siguientes criterios:

  • Filtro de cadenas: está registrado en Seattle.

  • Filtro decimal: tiene un importe de penalización pendiente inferior a 100.0.

  • Filtro de fecha: tiene una fecha de registro válida a partir del 4 de septiembre de 2019 incluido.

SELECT r.VIN, r.PendingPenaltyTicketAmount, r.Owners FROM VehicleRegistration AS r WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761') AND r.City = 'Seattle' --string AND r.PendingPenaltyTicketAmount < 100.0 --decimal AND r.ValidToDate >= `2019-09-04T` --timestamp with day precision
{ VIN: "1N4AL11D75C109151", PendingPenaltyTicketAmount: 90.25, Owners: { PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" }, SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }] } }

Uniones

También puede escribir consultas de combinación internas. El siguiente ejemplo muestra una consulta de combinación interna implícita que devuelve todos los documentos de registro junto con los atributos de los vehículos registrados.

SELECT * FROM VehicleRegistration AS r, Vehicle AS v WHERE r.VIN = v.VIN AND r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{ VIN: "1N4AL11D75C109151", LicensePlateNumber: "LEWISR261LL", State: "WA", City: "Seattle", PendingPenaltyTicketAmount: 90.25, ValidFromDate: 2017-08-21T, ValidToDate: 2020-05-11T, Owners: { PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" }, SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }] }, Type: "Sedan", Year: 2011, Make: "Audi", Model: "A5", Color: "Silver" }, { VIN: "KM8SRDHF6EU074761", LicensePlateNumber: "CA762X", State: "WA", City: "Kent", PendingPenaltyTicketAmount: 130.75, ValidFromDate: 2017-09-14T, ValidToDate: 2020-06-25T, Owners: { PrimaryOwner: { PersonId: "IN7MvYtUjkp1GMZu0F6CG9" }, SecondaryOwners: [] }, Type: "Sedan", Year: 2015, Make: "Tesla", Model: "Model S", Color: "Blue" }

O bien, puede escribir la misma consulta de combinación interna con la siguiente sintaxis explícita.

SELECT * FROM VehicleRegistration AS r INNER JOIN Vehicle AS v ON r.VIN = v.VIN WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')

Datos anidados

Puedes usar PartiQL in QLDB para consultar datos anidados en documentos. En el siguiente ejemplo, se muestra una subconsulta correlacionada que aplana datos anidados. En este caso, el carácter @ es técnicamente opcional. Sin embargo, indica de forma explícita que desea la estructura Owners dentro de VehicleRegistration y no una recopilación diferente denominada Owners (si existiera).

SELECT r.VIN, o.SecondaryOwners FROM VehicleRegistration AS r, @r.Owners AS o WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{ VIN: "1N4AL11D75C109151", SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }] }, { VIN: "KM8SRDHF6EU074761", SecondaryOwners: [] }

A continuación, se muestra una subconsulta de la lista SELECT que proyecta datos anidados, además de una combinación interna.

SELECT v.Make, v.Model, (SELECT VALUE o.PrimaryOwner.PersonId FROM @r.Owners AS o) AS PrimaryOwner FROM VehicleRegistration AS r, Vehicle AS v WHERE r.VIN = v.VIN AND r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{ Make: "Audi", Model: "A5", PrimaryOwner: ["294jJ3YUoH1IEEm8GSabOs"] }, { Make: "Tesla", Model: "Model S", PrimaryOwner: ["IN7MvYtUjkp1GMZu0F6CG9"] }

La siguiente consulta devuelve PersonId y el número de índice (ordinal) de cada persona de la lista Owners.SecondaryOwners de un documento VehicleRegistration.

SELECT s.PersonId, owner_idx FROM VehicleRegistration AS r, @r.Owners.SecondaryOwners AS s AT owner_idx WHERE r.VIN = '1N4AL11D75C109151'
{
    PersonId: "5Ufgdlnj06gF5CWcOIu64s",
    owner_idx: 0
}

Para obtener información sobre cómo consultar los metadatos del documento, continúe con Consulta de los metadatos del documento.