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.
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:
Temas
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 la
cast
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 }`
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