Consulta de Ion con PartiQL en Amazon QLDB - 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 Ion con PartiQL en Amazon QLDB

Cuando consulta datos en Amazon QLDB, escribe sentencias en formato PartiQL, pero QLDB devuelve los resultados en formato Amazon Ion. PartiQL está pensado para ser compatible con SQL, mientras que Ion es una extensión de JSON. Esto genera diferencias sintácticas entre la forma en que se anotan los datos en las sentencias de consulta y la forma en que se muestran los resultados de la consulta.

En esta sección se describen la sintaxis y la semántica básicas para ejecutar sentencias PartiQL manualmente mediante la consola QLDB o el shell de QLDB.

sugerencia

Al ejecutar consultas de PartiQL mediante programación, la práctica recomendada es utilizar sentencias parametrizadas. Puede utilizar un signo de interrogación (?) como marcador de posición de una variable de enlace en sus sentencias para evitar estas reglas de sintaxis. Esto también es más seguro y eficiente.

Para obtener más información, consulte los siguientes tutoriales en Introducción al controlador:

Sintaxis y semántica

Al utilizar la consola de QLDB o el shell de QLDB para consultar datos de Ion, las siguientes son la sintaxis y la semántica fundamentales de PartiQL:

Sensibilidad de mayúsculas y minúsculas

Todos los nombres de objetos del sistema QLDB, incluidos los nombres de campos, tablas y registros contables, distinguen mayúsculas de minúsculas.

Valores de cadena

En Ion, las comillas dobles ("...") indican una cadena.

En PartiQL, las comillas simples ('...') indican una cadena.

Símbolos e identificadores

En Ion, las comillas simples ('...') indican un símbolo. Un subconjunto de símbolos en Ion llamados identificadores se representa mediante texto sin comillas.

En PartiQL, las comillas dobles ("...") indican un identificador de PartiQL entre comillas, como una palabra reservada que se usa como nombre de tabla. El texto sin comillas representa un identificador de PartiQL normal, como el nombre de una tabla que no es una palabra reservada.

Literales de Ion

Cualquier literal de Ion se puede indicar con comillas invertidas (`...`) en una sentencia PartiQL.

Nombres de los campos

Los nombres de los campos de Ion distinguen entre mayúsculas y minúsculas. PartiQL permite indicar los nombres de los campos con comillas simples en una sentencia DML. Esta es una alternativa abreviada al uso de lacast función partiQL para definir un símbolo. También es más intuitivo que usar comillas invertidas para indicar un símbolo iónico literal.

Literales

Los literales del lenguaje de consulta PartiQL corresponden a los tipos de datos Ion, de la siguiente manera:

Escalares

Siga la sintaxis de SQL cuando corresponda, tal y como se describe enMapeo de tipos de iones parciales la sección. Por ejemplo:

  • 5

  • 'foo'

  • null

Estructuras

También se conocen como tuplas u objetos en muchos formatos y otros modelos de datos.

Se indica con llaves ({...}) construct elementos separados por comas.

  • { 'id' : 3, 'arr': [1, 2] }

Lists

También se conocen como matrices.

Se indica entre corchetes ([...]) con los elementos de la lista separados por comas.

  • [ 1, 'foo' ]

Bolsas

Colecciones desordenadas en PartiQL.

Se indica con corchetes de doble ángulo (<<...>>) con los elementos de la bolsa separados por comas. En QLDB, una tabla se puede concebir como una bolsa. Sin embargo, una bolsa no se puede colocar dentro de los documentos de una tabla.

  • << 1, 'foo' >>

Ejemplo

El siguiente es un ejemplo de la sintaxis de unaINSERT sentencia con varios tipos de iones.

INSERT INTO VehicleRegistration VALUE { 'VIN' : 'KM8SRDHF6EU074761', --string 'RegNum' : 1722, --integer 'State' : 'WA', 'City' : 'Kent', 'PendingPenaltyTicketAmount' : 130.75, --decimal 'Owners' : { --nested struct 'PrimaryOwner' : { 'PersonId': '294jJ3YUoH1IEEm8GSabOs' }, 'SecondaryOwners' : [ --list of structs { 'PersonId' : '1nmeDdLo3AhGswBtyM1eYh' }, { 'PersonId': 'IN7MvYtUjkp1GMZu0F6CG9' } ] }, 'ValidFromDate' : `2017-09-14T`, --Ion timestamp literal with day precision 'ValidToDate' : `2020-06-25T` }

Notación de comillas invertidas

PartiQL cubre completamente todos los tipos de datos de Ion, por lo que puede escribir cualquier declaración sin usar comillas inversas. Pero hay casos en los que esta sintaxis literal de Ion puede hacer que sus declaraciones sean más claras y concisas.

Por ejemplo, para insertar un documento con valores de símbolos y marcas de tiempo de Ion, puede escribir la siguiente sentencia utilizando únicamente la sintaxis de PartiQL.

INSERT INTO myTable VALUE { 'myTimestamp': to_timestamp('2019-09-04T'), 'mySymbol': cast('foo' as symbol) }

Esto es bastante detallado, por lo que, en su lugar, puedes usar comillas invertidas para simplificar tu declaración.

INSERT INTO myTable VALUE { 'myTimestamp': `2019-09-04T`, 'mySymbol': `foo` }

También puede incluir toda la estructura entre comillas invertidas para guardar unas cuantas pulsaciones más.

INSERT INTO myTable VALUE `{ myTimestamp: 2019-09-04T, mySymbol: foo }`
importante

Las cadenas y los símbolos son clases diferentes en PartiQL. Esto significa que, aunque tengan el mismo texto, no son iguales. Por ejemplo, las siguientes expresiones PartiQL se evalúan en diferentes valores de iones.

'foo'
`foo`

Navegación de rutas

Al escribir un lenguaje de manipulación de datos (DML) o sentencias de consulta, puede acceder a los campos de las estructuras anidadas mediante pasos de ruta. PartiQL admite la notación de puntos para acceder a los nombres de campo de una estructura principal. En el ejemplo siguiente se accede alModel campo de un elemento principalVehicle.

Vehicle.Model

Para acceder a un elemento específico de una lista, puede utilizar el operador de corchetes para indicar un número ordinal basado en cero. En el ejemplo siguiente se accede al elemento deSecondaryOwners con un número ordinal de2. En otras palabras, este es el tercer elemento de la lista.

SecondaryOwners[2]

Aliasing

QLDB admite contenido y esquemas abiertos. Por lo tanto, al acceder a determinados campos de una declaración, la mejor manera de asegurarse de obtener los resultados esperados es utilizar alias. Por ejemplo, si no especificas un alias explícito, el sistema generará uno implícito para tusFROM fuentes.

SELECT VIN FROM Vehicle --is rewritten to SELECT Vehicle.VIN FROM Vehicle AS Vehicle

Sin embargo, los resultados son impredecibles en el caso de los conflictos de nombres de campo. SiVIN existe otro campo denominado en una estructura anidada dentro de los documentos, losVIN valores devueltos por esta consulta podrían sorprenderle. Como práctica recomendada, escriba la siguiente declaración en su lugar. Esta consultav se declara como un alias que se extiende por toda laVehicle tabla. LaAS palabra clave es opcional.

SELECT v.VIN FROM Vehicle [ AS ] v

El uso de alias es especialmente útil cuando se crean rutas en colecciones anidadas dentro de un documento. Por ejemplo, la siguiente sentenciao se declara como un alias que abarca toda la colecciónVehicleRegistration.Owners.

SELECT o.SecondaryOwners FROM VehicleRegistration AS r, @r.Owners AS o

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).

Especificación PartiQL

Para obtener más información acerca del lenguaje de consulta PartiQL, consulte la especificación PartiQL.