Bekerja dengan JSONPath - Panduan Pengembang Amazon Kinesis Data Analytics SQL untuk Aplikasi

Setelah mempertimbangkan dengan cermat, kami memutuskan untuk menghentikan Amazon Kinesis Data Analytics SQL untuk aplikasi dalam dua langkah:

1. Mulai 15 Oktober 2025, Anda tidak akan dapat membuat Kinesis Data Analytics SQL baru untuk aplikasi.

2. Kami akan menghapus aplikasi Anda mulai 27 Januari 2026. Anda tidak akan dapat memulai atau mengoperasikan Amazon Kinesis Data Analytics Anda SQL untuk aplikasi. Support tidak akan lagi tersedia untuk Amazon Kinesis Data Analytics SQL sejak saat itu. Untuk informasi selengkapnya, lihat Amazon Kinesis Data Analytics SQL untuk penghentian Aplikasi.

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

Bekerja dengan JSONPath

catatan

Setelah 12 September 2023, Anda tidak akan dapat membuat aplikasi baru menggunakan Kinesis Data Firehose sebagai sumber jika Anda belum menggunakan Kinesis Data Analytics untuk SQL. Untuk informasi selengkapnya, lihat Batasan-batasan.

JSONPath adalah cara standar untuk mengkueri elemen dari objek JSON. JSONPath menggunakan ekspresi jalur untuk menavigasi elemen, elemen bersarang, dan array dalam dokumen JSON. Untuk informasi selengkapnya tentang JSON, lihat Memperkenalkan JSON.

Amazon Kinesis Data Analytics menggunakan ekspresi JSONPath dalam skema sumber aplikasi untuk mengidentifikasi elemen data dalam sumber streaming yang berisi data berformat JSON.

Untuk informasi selengkapnya tentang cara memetakan data streaming ke aliran input aplikasi Anda, lihat Memetakan Elemen Sumber Streaming ke Kolom Input SQL.

Mengakses Elemen JSON dengan JSONPath

Berikut ini, Anda dapat menemukan cara menggunakan ekspresi JSONPath untuk mengakses berbagai elemen dalam data berformat JSON. Untuk contoh di bagian ini, anggap aliran sumber berisi catatan JSON berikut:

{ "customerName":"John Doe", "address": { "streetAddress": [ "number":"123", "street":"AnyStreet" ], "city":"Anytown" } "orders": [ { "orderId":"23284", "itemName":"Widget", "itemPrice":"33.99" }, { "orderId":"63122", "itemName":"Gadget", "itemPrice":"22.50" }, { "orderId":"77284", "itemName":"Sprocket", "itemPrice":"12.00" } ] }

Mengakses Elemen JSON

Untuk mengkueri elemen dalam data JSON menggunakan JSONPath, gunakan sintaksis berikut. Di sini, $ mewakili akar hierarki data dan elementName adalah nama node elemen yang dikueri.

$.elementName

Ekspresi berikut mengkueri elemen customerName dalam contoh JSON sebelumnya.

$.customerName

Ekspresi sebelumnya mengembalikan hal berikut dari catatan JSON sebelumnya.

John Doe
catatan

Ekspresi jalur peka huruf besar/kecil. Ekspresi $.customername mengembalikan null dari contoh JSON sebelumnya.

catatan

Jika tidak ada elemen yang muncul di lokasi yang ditentukan oleh ekspresi jalur, ekspresi akan mengembalikan null. Ekspresi berikut mengembalikan null dari contoh JSON sebelumnya, karena tidak ada elemen yang cocok.

$.customerId

Mengakses Elemen JSON Bersarang

Untuk mengkueri elemen JSON bersarang, gunakan sintaksis berikut.

$.parentElement.element

Ekspresi berikut mengkueri elemen city dalam contoh JSON sebelumnya.

$.address.city

Ekspresi sebelumnya mengembalikan hal berikut dari catatan JSON sebelumnya.

Anytown

Anda dapat mengkueri tingkat subelemen selanjutnya menggunakan sintaksis berikut.

$.parentElement.element.subElement

Ekspresi berikut mengkueri elemen street dalam contoh JSON sebelumnya.

$.address.streetAddress.street

Ekspresi sebelumnya mengembalikan hal berikut dari catatan JSON sebelumnya.

AnyStreet

Mengakses Array

Anda dapat mengakses data dalam array JSON dengan cara berikut:

  • Mengambil semua elemen dalam array sebagai satu baris.

  • Mengambil setiap elemen dalam array sebagai baris terpisah.

Mengambil Semua Elemen dalam Array dalam Satu Baris

Untuk mengkueri seluruh isi array sebagai satu baris, gunakan sintaksis berikut.

$.arrayObject[0:]

Ekspresi berikut mengkueri seluruh isi elemen orders dalam contoh JSON sebelumnya yang digunakan di bagian ini. Ini mengembalikan isi array dalam satu kolom dalam satu baris.

$.orders[0:]

Ekspresi sebelumnya mengembalikan hal berikut dari catatan JSON contoh yang digunakan di bagian ini.

[{"orderId":"23284","itemName":"Widget","itemPrice":"33.99"},{"orderId":"61322","itemName":"Gadget","itemPrice":"22.50"},{"orderId":"77284","itemName":"Sprocket","itemPrice":"12.00"}]

Mengambil Semua Elemen dalam Array dalam Baris Terpisah

Untuk mengkueri elemen individual dalam array sebagai baris terpisah, gunakan sintaksis berikut.

$.arrayObject[0:].element

Ekspresi berikut mengkueri elemen orderId dalam contoh JSON sebelumnya, dan mengembalikan setiap elemen array sebagai baris terpisah.

$.orders[0:].orderId

Ekspresi sebelumnya mengembalikan hal berikut dari catatan JSON sebelumnya, dengan setiap item data yang dikembalikan sebagai baris terpisah.

23284

63122

77284

catatan

Jika ekspresi yang mengkueri elemen non-array disertakan dalam skema yang mengkueri elemen array individual, elemen non-array diulang untuk setiap elemen dalam array. Sebagai contoh, misalkan skema untuk contoh JSON sebelumnya termasuk ekspresi berikut:

  • $.customerName

  • $.orders[0:].orderId

Dalam kasus ini, baris data yang dikembalikan dari elemen aliran input sampel menyerupai hal berikut, dengan elemen name yang diulang untuk setiap elemen orderId.

John Doe

23284

John Doe

63122

John Doe

77284

catatan

Batasan berikut berlaku untuk ekspresi array di Amazon Kinesis Data Analytics:

  • Hanya satu tingkat dereferensi yang didukung dalam ekspresi array. Format ekspresi berikut tidak didukung.

    $.arrayObject[0:].element[0:].subElement
  • Hanya satu array yang dapat diratakan dalam skema. Beberapa array dapat direferensikan—dikembalikan sebagai satu baris yang berisi semua elemen dalam array. Namun, hanya satu array yang dapat memiliki masing-masing elemen yang dikembalikan sebagai baris individual.

    Skema yang berisi elemen dalam format berikut adalah valid. Format ini mengembalikan isi dari array kedua sebagai satu kolom, diulang untuk setiap elemen dalam array pertama.

    $.arrayObjectOne[0:].element $.arrayObjectTwo[0:]

    Skema yang berisi elemen dalam format berikut tidak valid.

    $.arrayObjectOne[0:].element $.arrayObjectTwo[0:].element

Pertimbangan Lainnya

Pertimbangan tambahan untuk bekerja dengan JSONPath adalah sebagai berikut:

  • Jika tidak ada array yang diakses oleh elemen individual dalam ekspresi JSONPath dalam skema aplikasi, satu baris dibuat dalam aliran input aplikasi untuk setiap catatan JSON yang diproses.

  • Ketika array diratakan (yaitu, elemennya dikembalikan sebagai baris individual), setiap elemen yang hilang menghasilkan nilai null yang dibuat di aliran dalam aplikasi.

  • Array selalu diratakan untuk setidaknya satu baris. Jika tidak ada nilai yang akan dikembalikan (yaitu, array kosong atau tidak ada elemen yang dikueri), satu baris dengan semua nilai null dikembalikan.

    Ekspresi berikut mengembalikan catatan dengan nilai null dari contoh JSON sebelumnya, karena tidak ada elemen yang cocok di jalur yang ditentukan.

    $.orders[0:].itemId

    Ekspresi sebelumnya mengembalikan hal berikut dari catatan contoh JSON sebelumnya.

    null

    null

    nol

Topik-Topik Terkait