Abfragen Ihrer Daten - Amazon Quantum Ledger Database (Amazon QLDB)

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Abfragen Ihrer Daten

In der Benutzeransicht wird nur die letzte, nicht gelöschte Version Ihrer Benutzerdaten angezeigt. Dies ist die Standardansicht in Amazon QLDB. Dies bedeutet, dass keine speziellen Kriterien erforderlich sind, wenn Sie nur Ihre Daten abfragen möchten.

Einzelheiten zur Syntax und zu den Parametern der folgenden Abfragebeispiele finden SieSELECT in der Amazon QLDB PartiQL-Referenz.

Grundlegende Abfragen

Grundlegende SELECT-Abfragen geben die Dokumente zurück, die Sie in die Tabelle eingefügt haben.

Warnung

Wenn Sie eine Abfrage in QLDB ohne indizierte Suche ausführen, wird ein vollständiger Tabellenscan aufgerufen. PartiQL unterstützt solche Abfragen, da es SQL-kompatibel ist. Führen Sie jedoch keine Tabellenscans für produktive Anwendungsfälle in QLDB aus. Tabellenscans können bei großen Tabellen zu Leistungsproblemen führen, einschließlich Parallelitätskonflikten und Transaktions-Timeouts.

Um Tabellenscans zu vermeiden, müssen Sie Anweisungen mit einerWHERE Prädikatklausel ausführen, die einen Gleichheitsoperator für ein indiziertes Feld oder eine Dokument-ID verwenden, z. B.WHERE indexedField = 123 oderWHERE indexedField IN (456, 789). Weitere Informationen finden Sie unter Optimieren der Abfrageleistung.

Die folgenden Abfragen zeigen Ergebnisse für die Fahrzeugscheine, die Sie zuvor eingegeben habenTabellen mit Indizes erstellen und Dokumente einfügen. Die Reihenfolge der Ergebnisse ist nicht spezifisch und kann für jedeSELECT Abfrage variieren. Sie sollten sich bei keiner Abfrage in QLDB auf die Reihenfolge der Ergebnisse verlassen.

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" }
Wichtig

In PartiQL verwenden Sie einfache Anführungszeichen, um Zeichenfolgen in der Data Manipulation Language (DML) oder in Abfrageanweisungen zu bezeichnen. Die QLDB-Konsole und die QLDB-Shell geben Abfrageergebnisse jedoch im Amazon Ion-Textformat zurück, sodass Sie Zeichenfolgen in doppelten Anführungszeichen sehen.

Diese Syntax ermöglicht es der PartiQL-Abfragesprache, die SQL-Kompatibilität aufrechtzuerhalten, und dem Amazon Ion-Textformat, um die JSON-Kompatibilität aufrechtzuerhalten.

Projektionen und Filter

Sie können Projektionen (gezieltSELECT) und andere Standardfilter (WHEREKlauseln) durchführen. Die folgende Abfrage gibt eine Teilmenge der Dokumentfelder aus der VehicleRegistration-Tabelle zurück. Sie filtert nach Fahrzeugen mit den folgenden Kriterien:

  • Zeichenkettenfilter — Er ist in Seattle registriert.

  • Dezimalfilter — Der Betrag eines ausstehenden Straftickets ist geringer als100.0.

  • Datumsfilter — Es hat ein Registrierungsdatum, das am oder nach dem 4. September 2019 gültig ist.

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" }] } }

Joins

Sie können auch innere Join-Abfragen schreiben. Das folgende Beispiel zeigt eine implizite innere Join-Abfrage, die alle Zulassungsdokumente zusammen mit den Attributen der registrierten Fahrzeuge zurückgibt.

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" }

Oder Sie können dieselbe innere Join-Abfrage in der folgenden expliziten Syntax schreiben.

SELECT * FROM VehicleRegistration AS r INNER JOIN Vehicle AS v ON r.VIN = v.VIN WHERE r.VIN IN ('1N4AL11D75C109151', 'KM8SRDHF6EU074761')

Nested data

Sie können PartiQL in QLDB verwenden, um verschachtelte Daten in Dokumenten abzufragen. Das folgende Beispiel zeigt eine korrelierte Unterabfrage, die verschachtelte Daten vereinfacht. Das Zeichen @ ist hier technisch optional. Es gibt jedoch explizit an, dass Sie die Owners-Struktur innerhalb von VehicleRegistration haben möchten, und nicht eine andere Sammlung mit dem Namen Owners (sofern vorhanden).

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: [] }

Das folgende Beispiel zeigt eine Unterabfrage in der SELECT-Liste, die verschachtelte Daten projiziert, zusätzlich zu einem inneren Join.

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"] }

Die folgende Abfrage gibt diePersonId und Indexnummer (Ordinalzahl) jeder Person in derOwners.SecondaryOwners Liste für einVehicleRegistration Dokument zurück.

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
}

Weitere Informationen zur Abfrage Ihrer Dokumentmetadaten finden Sie unter Metadaten von Dokumenten abfragen.