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 devuelve únicamente 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 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 en la referencia de PartiQL de Amazon QLDB.

Consultas básicas

Las consultas básicas de SELECT devuelven los documentos que ha insertado 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 ejecute escaneados 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 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 Optimizar el rendimiento de las consul‎tas‎.

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

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

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

combinaciones;

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

Puede usar PartiQL en 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.