Consulta de sus datos - Amazon Quantum Ledger Database (Amazon QLDB)

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

La vista de usuario solo muestra la última revisión no eliminada de sus datos de usuario. Esta es la vista predeterminada en Amazon QLDB. Esto significa que no se necesitan calificadores especiales cuando solo desea consultar sus datos.

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

Consultas básicas

SELECTLas consultas básicas devuelven los documentos que insertó en la tabla.

aviso

Cuando ejecuta una consulta en QLDB sin una búsqueda indexada, se invoca un escaneo completo de la tabla. PartiQL admite este tipo de consultas porque es compatible con SQL. Sin embargo, no realice escaneos de tablas para casos de uso de producción en QLDB. 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 escaneo de tablas, debe ejecutar sentencias con una cláusula deWHERE predicado mediante un operador de igualdad en un campo indexado o en un identificador de documento; por ejemplo,WHERE indexedField = 123 oWHERE 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ó anteriormenteCrear tablas con índices e insertar documentos. El orden de los resultados no es específico y puede variar para cadaSELECT consulta. No debe confiar en el orden de los resultados para ninguna consulta en QLDB.

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 sentencias de consulta. Sin embargo, la consola de QLDB y el shell de QLDB devuelven los resultados de la consulta en formato de texto Amazon Ion, por lo que las cadenas aparecen entre comillas dobles.

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

Proyecciones y filtros

Puede realizar proyecciones (específicasSELECT) y otros filtros estándar (WHEREcláusulas). La siguiente consulta devuelve un subconjunto de campos del documento de laVehicleRegistration tabla. Filtra vehículos con los siguientes criterios:

  • Filtro de cadenas: está registrado en Seattle.

  • Filtro decimal: tiene un importe de penalización pendiente inferior a100.0.

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

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" }] } }

combinaciones;

También puede escribir consultas de unión internas. El siguiente ejemplo muestra una consulta de unió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 unión interna en la sintaxis explícita de la siguiente manera.

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

Datos anidados

Puede usar PartiQL en QLDB para consultar datos anidados en documentos. En el siguiente ejemplo, se muestra una subconsulta correlacionada que aplana los datos anidados. El@ personaje es técnicamente opcional en este caso. Pero indica explícitamente que desea tener laOwners estructura dentroVehicleRegistration, no una colección con un nombre diferenteOwners (si existe alguna).

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 laSELECT lista que proyecta datos anidados, además de una unió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 elPersonId número de índice (ordinal) de cada persona de laOwners.SecondaryOwners lista de unVehicleRegistration documento.

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, vaya aConsultar los metadatos del documento.