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