Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Interrogare Ion con PartiQL in Amazon QLDB
Importante
Avviso di fine del supporto: i clienti esistenti potranno utilizzare Amazon QLDB fino alla fine del supporto il 31/07/2025. Per ulteriori dettagli, consulta Migrare un Amazon QLDB Ledger ad Amazon Aurora Postgre
Quando esegui una query sui dati in AmazonQLDB, scrivi istruzioni in formato PartiQL, ma QLDB restituisci i risultati in formato Amazon Ion. PartiQL è pensato per essere SQL -compatibile, mentre Ion è un'estensione di. JSON Ciò porta a differenze sintattiche tra il modo in cui si annotano i dati nelle istruzioni di query e il modo in cui vengono visualizzati i risultati della query.
Suggerimento
Quando si eseguono query PartiQL a livello di codice, la procedura migliore consiste nell'utilizzare istruzioni con parametri. È possibile utilizzare un punto interrogativo (?
) come segnaposto della variabile di associazione nelle istruzioni per evitare queste regole di sintassi. Ciò è anche più sicuro ed efficiente.
Per ulteriori informazioni, consulta i seguenti tutorial in Guida introduttiva al driver:
-
Java: | Tutorial di avvio rapido Riferimento al libro di cucina
-
.NET: Tutorial di avvio rapido | Riferimento al libro di cucina
-
Vai: Tutorial di avvio rapido | Riferimento al libro di cucina
-
Node.js: Tutorial di avvio rapido | Riferimento al libro di cucina
-
Python: | Tutorial di avvio rapido Riferimento al libro di cucina
Argomenti
Sintassi e semantica
Quando si utilizza la QLDB console o la QLDB shell per interrogare i dati Ion, la sintassi e la semantica fondamentali di PartiQL sono le seguenti:
- Distinzione tra lettere maiuscole e minuscole
-
Tutti i nomi degli oggetti QLDB di sistema, inclusi i nomi dei campi, i nomi delle tabelle e i nomi dei registri, fanno distinzione tra maiuscole e minuscole.
- Valori delle stringhe
-
In Ion, le virgolette doppie (
"..."
) indicano una stringa.In PartiQL, le virgolette singole (
'...'
) indicano una stringa. - Simboli e identificatori
-
In Ion, le virgolette singole (
'...'
) indicano un simbolo.Un sottoinsieme di simboli in Ion, chiamati identificatori, è rappresentato da testo senza virgolette. In PartiQL, le virgolette doppie (
"..."
) indicano un identificatore PartiQL tra virgolette, ad esempio una parola riservata utilizzata come nome di tabella. Il testo senza virgolette rappresenta un normale identificatore PartiQL, ad esempio un nome di tabella che non è una parola riservata. - Valori letterali ionici
-
Qualsiasi valore letterale Ion può essere indicato con backticks ()
`...`
in un'istruzione PartiQL. - Nomi di campo
-
I nomi dei campi ionici fanno distinzione tra maiuscole e minuscole. PartiQL consente di indicare i nomi dei campi con virgolette singole in un'istruzione. DML Questa è un'alternativa abbreviata all'utilizzo della funzione PartiQL per definire un simbolo.
cast
È anche più intuitivo rispetto all'utilizzo dei backtick per indicare un simbolo ionico letterale.
Valori letterali
I valori letterali del linguaggio di query PartiQL corrispondono ai tipi di dati Ion, come segue:
- Scalari
-
Segui la SQL sintassi quando applicabile, come descritto nella Mappatura del tipo a ioni parziali sezione. Per esempio:
-
5
-
'foo'
-
null
-
- Strutture
-
Conosciute anche come tuple o oggetti in molti formati e altri modelli di dati.
Denotato da parentesi graffe (
{...}
) construct
elementi separati da virgole.-
{ 'id' : 3, 'arr': [1, 2] }
-
- Elenchi
-
Conosciuti anche come matrici.
Denotato da parentesi quadre (
[...]
) con elementi dell'elenco separati da virgole.-
[ 1, 'foo' ]
-
- Borse
-
Raccolte non ordinate in PartiQL.
Denotato da parentesi a doppio angolo (
<<...>>
) con elementi della borsa separati da virgole. NelQLDB, un tavolo può essere pensato come una borsa. Tuttavia, una borsa non può essere annidata all'interno dei documenti di una tabella.-
<< 1, 'foo' >>
-
Esempio
Di seguito è riportato un esempio della sintassi di un'INSERT
istruzione con vari tipi di ioni.
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` }
Notazione Backtick
PartiQL copre completamente tutti i tipi di dati Ion, quindi puoi scrivere qualsiasi istruzione senza usare backtick. Ma ci sono casi in cui questa sintassi letterale di Ion può rendere le tue dichiarazioni più chiare e concise.
Ad esempio, per inserire un documento con timestamp e valori dei simboli Ion, è possibile scrivere la seguente dichiarazione utilizzando solo la sintassi PartiQL.
INSERT INTO myTable VALUE { 'myTimestamp': to_timestamp('2019-09-04T'), 'mySymbol': cast('foo' as symbol) }
Si tratta di una procedura piuttosto dettagliata, quindi è possibile utilizzare i backtick per semplificare la dichiarazione.
INSERT INTO myTable VALUE { 'myTimestamp': `2019-09-04T`, 'mySymbol': `foo` }
Puoi anche racchiudere l'intera struttura tra i backtick per risparmiare qualche altra pressione di tasti.
INSERT INTO myTable VALUE `{ myTimestamp: 2019-09-04T, mySymbol: foo }`
Importante
Le stringhe e i simboli sono classi diverse in PartiQL. Ciò significa che anche se hanno lo stesso testo, non sono uguali. Ad esempio, le seguenti espressioni PartiQL restituiscono valori Ion diversi.
'foo'
`foo`
Navigazione del percorso
Quando scrivi il linguaggio di manipolazione dei dati (DML) o le istruzioni di query, puoi accedere ai campi all'interno di strutture annidate utilizzando i passaggi del percorso. PartiQL supporta la notazione a punti per accedere ai nomi dei campi di una struttura principale. L'esempio seguente accede al Model
campo di un elemento principale. Vehicle
Vehicle.Model
Per accedere a un elemento specifico di un elenco, è possibile utilizzare l'operatore parentesi quadre per indicare un numero ordinale a base zero. L'esempio che segue accede all'elemento of con un numero ordinale diSecondaryOwners
. 2
In altre parole, questo è il terzo elemento dell'elenco.
SecondaryOwners[2]
Aliasing
QLDBsupporta contenuti e schemi aperti. Pertanto, quando si accede a campi particolari di un'istruzione, il modo migliore per assicurarsi di ottenere i risultati attesi è utilizzare gli alias. Ad esempio, se non specificate un alias esplicito, il sistema ne genera uno implicito per le vostre fonti. FROM
SELECT VIN FROM Vehicle
--is rewritten to
SELECT Vehicle.VIN FROM Vehicle AS Vehicle
Ma i risultati sono imprevedibili per quanto riguarda i conflitti tra nomi di campo. Se un altro campo denominato VIN
esiste in una struttura annidata all'interno dei documenti, i VIN
valori restituiti da questa query potrebbero sorprenderti. Come procedura consigliata, scrivete invece la seguente dichiarazione. Questa query viene dichiarata v
come un alias che si estende su tutta la Vehicle
tabella. La AS
parola chiave è facoltativa.
SELECT v.VIN FROM Vehicle [ AS ] v
L'aliasing è particolarmente utile quando si esegue il percorso in raccolte annidate all'interno di un documento. Ad esempio, l'istruzione seguente si dichiara o
come un alias che si estende all'interno della raccolta. VehicleRegistration.Owners
SELECT o.SecondaryOwners FROM VehicleRegistration AS r, @r.Owners AS o
In questo caso il @
personaggio è tecnicamente opzionale. Ma indica esplicitamente che vuoi la Owners
struttura all'internoVehicleRegistration
, non una raccolta con un nome diverso Owners
(se ne esiste una).
Specificazione PartiQL
Per ulteriori informazioni sul linguaggio di query PartiQL, vedere la specifica PartiQL.