Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Interrogation de vos données
Important
Avis de fin de support : les clients existants pourront utiliser Amazon QLDB jusqu'à la fin du support le 31 juillet 2025. Pour plus de détails, consultez Migrer un Amazon QLDB Ledger vers Amazon Aurora SQL Postgre
La vue utilisateur renvoie uniquement la dernière révision non supprimée de vos données utilisateur. Il s'agit de l'affichage par défaut sur AmazonQLDB. Cela signifie qu'aucun qualificatif spécial n'est nécessaire lorsque vous souhaitez interroger uniquement vos données.
Pour plus de détails sur la syntaxe et les paramètres des exemples de requêtes suivants, consultez SELECT la référence Amazon QLDB partiQL.
Requêtes de base
Les SELECT
requêtes de base renvoient les documents que vous avez insérés dans le tableau.
Avertissement
Lorsque vous exécutez une requête QLDB sans recherche indexée, elle appelle une analyse complète de la table. partiQL prend en charge ces requêtes car il est SQL compatible. Cependant, n'exécutez pas d'analyses de tables pour les cas d'utilisation en production dansQLDB. L'analyse des tables peut entraîner des problèmes de performance sur les tables de grande taille, notamment des conflits de simultanéité et des délais d'expiration des transactions.
Pour éviter de scanner des tables, vous devez exécuter des instructions contenant une clause de WHERE
prédicat à l'aide d'un opérateur d'égalité sur un champ indexé ou un identifiant de document ; par exemple, WHERE indexedField = 123
ou. WHERE indexedField IN (456, 789)
Pour plus d’informations, consultez Optimisation des performances des requêtes.
Les requêtes suivantes affichent les résultats des documents d'immatriculation du véhicule que vous avez insérés précédemmentCréation de tables avec index et insertion de documents. L'ordre des résultats n'est pas spécifique et peut varier pour chaque SELECT
requête. Vous ne devez pas vous fier à l'ordre des résultats pour les requêtes dansQLDB.
SELECT * FROM VehicleRegistration WHERE LicensePlateNumber IN ('LEWISR261LL', 'CA762X')
{
VIN: "1N4AL11D75C109151",
LicensePlateNumber: "LEWISR261LL",
State: "WA",
City: "Seattle",
PendingPenaltyTicketAmount: 90.25,
ValidFromDate: 2017-08-21T,
ValidToDate: 2020-05-11T,
Owners: {
PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" },
SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }]
}
},
{
VIN: "KM8SRDHF6EU074761",
LicensePlateNumber: "CA762X",
State: "WA",
City: "Kent",
PendingPenaltyTicketAmount: 130.75,
ValidFromDate: 2017-09-14T,
ValidToDate: 2020-06-25T,
Owners: {
PrimaryOwner: { PersonId: "IN7MvYtUjkp1GMZu0F6CG9" },
SecondaryOwners: []
}
}
SELECT * FROM Vehicle WHERE VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{
VIN: "1N4AL11D75C109151",
Type: "Sedan",
Year: 2011,
Make: "Audi",
Model: "A5",
Color: "Silver"
},
{
VIN: "KM8SRDHF6EU074761",
Type: "Sedan",
Year: 2015,
Make: "Tesla",
Model: "Model S",
Color: "Blue"
}
Important
Dans PartiQL, vous utilisez des guillemets simples pour indiquer des chaînes dans le langage de manipulation de données (DML) ou dans les instructions de requête. Mais la QLDB console et le QLDB shell renvoient les résultats de la requête au format texte Amazon Ion. Vous pouvez donc voir des chaînes entre guillemets doubles.
Cette syntaxe permet au langage de requête partiQL de maintenir la SQL compatibilité et au format de texte Amazon Ion de maintenir JSON la compatibilité.
Projections et filtres
Vous pouvez effectuer des projections (cibléesSELECT
) et d'autres filtres standard (WHERE
clauses). La requête suivante renvoie un sous-ensemble de champs de document à partir de la VehicleRegistration
table. Il filtre les véhicules selon les critères suivants :
-
Filtre de chaînes — Il est enregistré à Seattle.
-
Filtre décimal — Le montant du ticket de pénalité en attente est inférieur à
100.0
. -
Filtre de date — Sa date d'enregistrement est valide le 4 septembre 2019 ou après cette date.
SELECT r.VIN, r.PendingPenaltyTicketAmount, r.Owners FROM VehicleRegistration AS r WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761') AND r.City = 'Seattle' --string AND r.PendingPenaltyTicketAmount < 100.0 --decimal AND r.ValidToDate >= `2019-09-04T` --timestamp with day precision
{
VIN: "1N4AL11D75C109151",
PendingPenaltyTicketAmount: 90.25,
Owners: {
PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" },
SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }]
}
}
Jointures
Vous pouvez également écrire des requêtes de jointure internes. L'exemple suivant montre une requête de jointure interne implicite qui renvoie tous les documents d'immatriculation ainsi que les attributs des véhicules immatriculés.
SELECT * FROM VehicleRegistration AS r, Vehicle AS v WHERE r.VIN = v.VIN AND r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{
VIN: "1N4AL11D75C109151",
LicensePlateNumber: "LEWISR261LL",
State: "WA",
City: "Seattle",
PendingPenaltyTicketAmount: 90.25,
ValidFromDate: 2017-08-21T,
ValidToDate: 2020-05-11T,
Owners: {
PrimaryOwner: { PersonId: "294jJ3YUoH1IEEm8GSabOs" },
SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }]
},
Type: "Sedan",
Year: 2011,
Make: "Audi",
Model: "A5",
Color: "Silver"
},
{
VIN: "KM8SRDHF6EU074761",
LicensePlateNumber: "CA762X",
State: "WA",
City: "Kent",
PendingPenaltyTicketAmount: 130.75,
ValidFromDate: 2017-09-14T,
ValidToDate: 2020-06-25T,
Owners: {
PrimaryOwner: { PersonId: "IN7MvYtUjkp1GMZu0F6CG9" },
SecondaryOwners: []
},
Type: "Sedan",
Year: 2015,
Make: "Tesla",
Model: "Model S",
Color: "Blue"
}
Vous pouvez également écrire la même requête de jointure interne dans la syntaxe explicite suivante.
SELECT * FROM VehicleRegistration AS r INNER JOIN Vehicle AS v ON r.VIN = v.VIN WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
Données imbriquées
Vous pouvez utiliser PartiQL in QLDB pour interroger des données imbriquées dans des documents. L'exemple suivant montre une sous-requête corrélée qui aplatit les données imbriquées. Le @
personnage est techniquement facultatif ici. Mais cela indique explicitement que vous voulez y inclure la Owners
structureVehicleRegistration
, et non une collection différente nommée Owners
(s'il en existait une).
SELECT r.VIN, o.SecondaryOwners FROM VehicleRegistration AS r, @r.Owners AS o WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{
VIN: "1N4AL11D75C109151",
SecondaryOwners: [{ PersonId: "5Ufgdlnj06gF5CWcOIu64s" }]
},
{
VIN: "KM8SRDHF6EU074761",
SecondaryOwners: []
}
Ce qui suit montre une sous-requête de la SELECT
liste qui projette des données imbriquées, en plus d'une jointure interne.
SELECT v.Make, v.Model, (SELECT VALUE o.PrimaryOwner.PersonId FROM @r.Owners AS o) AS PrimaryOwner FROM VehicleRegistration AS r, Vehicle AS v WHERE r.VIN = v.VIN AND r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')
{
Make: "Audi",
Model: "A5",
PrimaryOwner: ["294jJ3YUoH1IEEm8GSabOs"]
},
{
Make: "Tesla",
Model: "Model S",
PrimaryOwner: ["IN7MvYtUjkp1GMZu0F6CG9"]
}
La requête suivante renvoie le numéro d'index (ordinal) PersonId
et de chaque personne figurant dans la Owners.SecondaryOwners
liste d'un VehicleRegistration
document.
SELECT s.PersonId, owner_idx FROM VehicleRegistration AS r, @r.Owners.SecondaryOwners AS s AT owner_idx WHERE r.VIN = '1N4AL11D75C109151'
{
PersonId: "5Ufgdlnj06gF5CWcOIu64s",
owner_idx: 0
}
Pour savoir comment interroger les métadonnées de votre document, passez àInterrogation des métadonnées d'un document.