Consultando Ion con PartiQL en Amazon QLDB - 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.

Consultando Ion con PartiQL en Amazon QLDB

importante

Aviso de fin del soporte: los clientes actuales podrán utilizar 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.

Cuando consultas datos en AmazonQLDB, escribes declaraciones en formato PartiQL, pero QLDB devuelves los resultados en formato Amazon Ion. PartiQL está pensado para ser SQL compatible, mientras que Ion es una extensión de. JSON Esto genera diferencias sintácticas entre la forma de anotar los datos en las instrucciones 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 instrucciones PartiQL manualmente mediante QLDBla consola o QLDB el shell.

sugerencia

Al ejecutar consultas de PartiQL mediante programación, la práctica recomendada es utilizar instrucciones parametrizadas. Puede utilizar un signo de interrogación (?) como marcador de posición de una variable de enlace en sus instrucciones 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

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

Sensibilidad de mayúsculas y minúsculas

Todos los nombres de los objetos QLDB del sistema, incluidos los nombres de los campos, los nombres de las tablas y los nombres del libro mayor, 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. En Ion, un subconjunto de símbolos denominados identificadores se representa mediante texto sin comillas.

En PartiQL, las comillas dobles ("...") indican identificadores 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 acentos graves (`...`) en una instrucción de PartiQL.

Nombres de los campos

Todos los nombres de campo en Ion distinguen entre mayúsculas y minúsculas. PartiQL permite indicar los nombres de campo con comillas simples en una declaración. DML Esta es una alternativa abreviada al uso de la función cast de PartiQL para definir un símbolo. También es más intuitivo que usar acentos graves para denotar un símbolo literal de Ion.

Literales

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

Escalares

Siga la SQL sintaxis cuando proceda, tal y como se describe en Mapeo de tipo PartiQL-Ion la sección. Por ejemplo:

  • 5

  • 'foo'

  • null

Structs

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

Se indican mediante paréntesis ({...}) con los elementos struct separados por comas.

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

Lists

También se conocen como matrices.

Se indican mediante paréntesis ([...]) con los elementos de lista separados por comas.

  • [ 1, 'foo' ]

Bags

Colecciones desordenadas en PartiQL.

Se indican mediante corchetes de doble ángulo (<<...>>) con los elementos de lista separados por comas. EnQLDB, una mesa puede considerarse como una bolsa. Sin embargo, no se puede anidar un bag dentro de los documentos de una tabla.

  • << 1, 'foo' >>

Ejemplo

A continuación, se muestra un ejemplo de la sintaxis de una instrucción INSERT con diversos tipos de Ion.

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 con acentos graves

PartiQL cubre todos los tipos de datos de Ion, por lo que puede escribir cualquier instrucción sin usar acentos graves. Sin embargo, hay casos en los que esta sintaxis literal de Ion puede hacer que sus instrucciones sean más claras y concisas.

Por ejemplo, para insertar un documento con valores de marca de tiempo y símbolo de Ion, puede escribir la siguiente instrucción 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, puede utilizar acentos graves para simplificar la instrucción.

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

También puede incluir toda la estructura entre acentos graves para ahorrar algunas pulsaciones del teclado 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 de PartiQL se evalúan en valores de Ion diferentes.

'foo'
`foo`

Navegación de rutas

Al escribir sentencias de lenguaje de manipulación de datos (DML) o de consulta, puede acceder a los campos dentro de estructuras anidadas mediante pasos de ruta. PartiQL es compatible con la notación de puntos, que permite acceder a los nombres de campo de una estructura principal. En el siguiente ejemplo se accede al campo Model de un Vehicle principal.

Vehicle.Model

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

SecondaryOwners[2]

Uso de alias

QLDBadmite contenido y esquemas abiertos. Por lo tanto, cuando accede a campos concretos de una instrucción, la mejor manera de asegurarse de obtener los resultados esperados es utilizar alias. Por ejemplo, si no especifica un alias explícito, el sistema generará uno implícito para sus orígenes FROM.

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

Sin embargo, los resultados son impredecibles en caso de conflictos de nombres de campo. Si existe otro campo con el nombre VIN en una estructura anidada dentro de los documentos, los valores VIN devueltos por esta consulta pueden sorprenderle. Como práctica recomendada, escriba la siguiente instrucción en su lugar. Esta consulta declara v como un alias que se extiende por encima de la tabla Vehicle. La palabra clave AS es opcional.

SELECT v.VIN FROM Vehicle [ AS ] v

El uso de alias resulta especialmente útil cuando se crea una ruta a colecciones anidadas dentro de un documento. Por ejemplo, la siguiente instrucción declara o como un alias que abarca toda la colección VehicleRegistration.Owners.

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

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

Especificación de PartiQL

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