Melakukan Kueri Data - Amazon Quantum Ledger Database (Amazon QLDB)

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Melakukan Kueri Data

Tampilan pengguna mengembalikan revisi terbaru yang tidak dihapus dari data pengguna Anda saja. Ini adalah tampilan default di Amazon QLDB. Ini berarti bahwa tidak ada kualifikasi khusus yang diperlukan ketika Anda ingin query hanya data Anda.

Untuk detail tentang sintaks dan parameter dari contoh kueri berikut, lihatPilih di referensi Amazon QLDB PartiQL.

Kueri dasar

SELECTKueri dasar mengembalikan dokumen yang Anda masukkan ke dalam tabel.

Awas

Ketika Anda menjalankan query di QLDB tanpa pencarian diindeks, memanggil scan tabel penuh. PartiQL mendukung query tersebut karena SQL kompatibel. Namun, jangan jalankan pemindaian tabel untuk kasus penggunaan produksi di QLDB. Pemindaian tabel dapat menyebabkan masalah kinerja pada tabel besar, termasuk konflik konkurensi dan batas waktu transaksi.

Untuk menghindari pemindaian tabel, Anda harus menjalankan pernyataan dengan klausaWHERE predikat menggunakan operator kesetaraan pada bidang yang diindeks atau ID dokumen; misalnya,WHERE indexedField = 123 atauWHERE indexedField IN (456, 789). Untuk informasi selengkapnya, lihat Mengoptimalkan kinerja kueri.

Kueri berikut menunjukkan hasil untuk dokumen registrasi kendaraan yang sebelumnya Anda masukkanMembuat tabel dengan indeks dan memasukkan dokumen. Urutan hasilnya tidak spesifik dan dapat bervariasi untuk setiapSELECT kueri. Anda tidak boleh bergantung pada urutan hasil untuk kueri apa pun di QLDB.

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

Dalam PartiQL, Anda menggunakan tanda kutip tunggal untuk menunjukkan string dalam bahasa manipulasi data (DHTML) atau pernyataan query. Tetapi konsol QLDB dan shell QLDB mengembalikan kueri menghasilkan format teks Amazon Ion, sehingga Anda melihat string tertutup dalam tanda kutip ganda.

Sintaks ini memungkinkan bahasa kueri PartiQL untuk mempertahankan kompatibilitas SQL, dan format teks Amazon Ion untuk mempertahankan kompatibilitas JSON.

Proyeksi dan filter

Anda dapat melakukan proyeksi (ditargetkanSELECT) dan filter standar lainnya (WHEREklausa). Query berikut mengembalikan subset bidang dokumen dariVehicleRegistration tabel. Filter untuk kendaraan dengan kriteria berikut:

  • String filter - Ini terdaftar di Seattle.

  • Filter desimal - Ini memiliki jumlah tiket penalti yang tertunda kurang dari100.0.

  • Filter tanggal - Ini memiliki tanggal pendaftaran yang berlaku pada atau setelah 4 September 2019.

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

Bergabung

Anda juga dapat menulis kueri gabungan batin. Contoh berikut menunjukkan batin implisit bergabung query yang mengembalikan semua dokumen pendaftaran bersama dengan atribut kendaraan terdaftar.

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

Atau, Anda dapat menulis kueri gabungan batin yang sama dalam sintaks eksplisit sebagai berikut.

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

Data yang tertumpuk

Anda dapat menggunakan PartiQL di QLDB untuk query data bersarang dalam dokumen. Contoh berikut menunjukkan subquery berkorelasi yang meratakan data bersarang. @Karakter secara teknis opsional di sini. Tetapi secara eksplisit menunjukkan bahwa Anda inginOwners struktur dalamVehicleRegistration, bukan koleksi yang berbeda bernamaOwners (jika ada).

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

Berikut ini menunjukkan subquery dalamSELECT daftar yang memproyeksikan data bersarang, di tambahan untuk bergabung batin.

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

Query berikut mengembalikanPersonId dan indeks (ordinal) jumlah setiap orang dalamOwners.SecondaryOwners daftar untukVehicleRegistration dokumen.

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
}

Untuk mempelajari cara menanyakan metadata dokumen Anda, lanjutkan keMelakukan Kueri Metadata Dokumen.