Interrogation de vos données - Base de données Amazon Quantum Ledger (AmazonQLDB)

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