Consulta de 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 datos

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

Para obtener más información sobre la sintaxis y los parámetros de los siguientes ejemplos de consulta, consulteSELECTen laReferencia de Amazon QLDB.

Consultas básicas

BásicoSELECTLas consultas devuelven los documentos que insertó en la tabla.

aviso

Cuando ejecuta una consulta en QLDB sin una búsqueda indexada, invoca un análisis de tabla completo. PartiQL admite tales consultas porque es compatible con SQL. Sin embargo,Don't (Noanálisis de tablas de ejecución en busca de casos de uso de producción en QLDB. Los análisis de tablas pueden provocar problemas de rendimiento en tablas grandes, incluidos conflictos de simultaneidad y tiempos de espera de transacciones.

Para evitar análisis de tablas, debe ejecutar sentencias con unWHEREcláusula predicado mediante unigualdadoperador en un campo indexado o un ID de documento; por ejemplo,WHERE indexedField = 123oWHERE indexedField IN (456, 789). Para obtener más información, consulte Optimización del rendimiento de consultas.

Las siguientes consultas muestran los resultados de los documentos de registro del vehículo que insertó anteriormente enCreación de tablas con índices e inserción de documentos. El orden de los resultados no es específico y puede variar para cada unoSELECTconsulta. No debe confiar en el orden de 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 lenguaje de manipulación de datos (DML) o sentencias de consulta. Pero la consola de QLDB y el shell de QLDB devuelven la consulta resultan en formato de texto de Amazon Ion, por lo que verá cadenas entre comillas dobles.

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

Proyecciones y filtros

Puede realizar proyecciones (segmentadas)SELECT) y otros filtros estándar (WHEREcláusulas). La siguiente consulta devuelve un subconjunto de campos de documento delVehicleRegistrationtable. Filtra para vehículos con los siguientes criterios:

  • Filtro de cuerdas— Está registrado en Seattle.

  • Filtro decimal— Tiene un monto de multa pendiente inferior a100.0.

  • Filtro de fecha— Tiene una fecha de registro válida el 4 de septiembre de 2019 o después.

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. En el ejemplo siguiente se muestra una consulta de unión interna implícita que devuelve todos los documentos de registro junto con los atributos de los vehículos matriculados.

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

PartiQL tiene extensiones de Amazon Ion que le permiten consultar datos anidados en documentos. En el ejemplo siguiente se muestra una subconsulta correlacionada que aplana los datos anidados. La@El carácter es opcional desde el punto de vista técnico aquí. Pero indica explícitamente que quieres elOwnersestructura dentro deVehicleRegistration, no una colección distinta denominadaOwners(si existiera uno).

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 en laSELECTlista 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 laPersonIdy número de índice (ordinal) de cada persona en elOwners.SecondaryOwnerslista de unVehicleRegistrationno válido.

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 de los documentos, continúe enConsulta de metadatos de documentos.