

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

1. Mulai **1 September 2025,** kami tidak akan memberikan perbaikan bug untuk Amazon Kinesis Data Analytics untuk aplikasi SQL karena kami akan memiliki dukungan terbatas untuk itu, mengingat penghentian yang akan datang.

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

3. Kami akan menghapus aplikasi Anda mulai **27 Januari 2026**. Anda tidak akan dapat memulai atau mengoperasikan Amazon Kinesis Data Analytics untuk aplikasi SQL. Support tidak akan lagi tersedia untuk Amazon Kinesis Data Analytics untuk SQL sejak saat itu. Untuk informasi selengkapnya, lihat [Amazon Kinesis Data Analytics untuk penghentian Aplikasi SQL](discontinuation.md).

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

# Bekerja dengan JSONPath
<a name="about-json-path"></a>

**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](https://docs.aws.amazon.com//kinesisanalytics/latest/dev/limits.html).

JSONPath adalah cara standar untuk menanyakan elemen objek JSON. JSONPath menggunakan ekspresi jalur untuk menavigasi elemen, elemen bersarang, dan array dalam dokumen JSON. Untuk informasi selengkapnya tentang JSON, lihat [Memperkenalkan JSON](http://www.json.org/).

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

Untuk informasi selengkapnya tentang cara memetakan data streaming ke aliran input aplikasi Anda, lihat [Memetakan Elemen Sumber Streaming ke Kolom Input SQL](sch-mapping.md).

## Mengakses Elemen JSON dengan JSONPath
<a name="about-json-path-elements"></a>

Berikut ini, Anda dapat menemukan cara menggunakan JSONPath ekspresi 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
<a name="about-json-path-firstlevel"></a>

Untuk query elemen dalam data JSON menggunakan JSONPath, gunakan sintaks 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
<a name="about-json-path-nested"></a>

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
<a name="about-json-path-arrays"></a>

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
<a name="about-json-path-arrays-row"></a>

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
<a name="about-json-path-arrays-separate"></a>

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:  
\$1.customerName
\$1.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
<a name="about-json-path-other"></a>

Pertimbangan tambahan untuk bekerja dengan JSONPath adalah sebagai berikut:
+ Jika tidak ada array yang diakses oleh elemen individual dalam JSONPath ekspresi dalam skema aplikasi, maka satu baris dibuat dalam aliran input aplikasi untuk setiap catatan JSON 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.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/id_id/kinesisanalytics/latest/dev/about-json-path.html)

## Topik Terkait
<a name="about-json-path.Related"></a>
+ [Memperkenalkan JSON](http://www.json.org/)