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.
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:
-
Java: Tutorial de inicio rápido | Referencia de libro de recetas
-
.NET: Tutorial de inicio rápido | Referencia de libro de recetas
-
Go: Tutorial de inicio rápido | Referencia de libro de recetas
-
Node.js: Tutorial de inicio rápido | Referencia de libro de recetas
-
Python: Tutorial de inicio rápido | Referencia de libro de recetas
Temas
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 elementosstruct
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