

 Amazon Redshift tidak akan lagi mendukung penggunaan Python UDF setelah 30 Juni 2026. Kami akan mulai menegakkannya secara bertahap. Untuk informasi lebih lanjut tentang detail opsi akhir masa pakai dan migrasi Python, lihat posting [ blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/) yang diterbitkan pada 30 Juni 2025. 

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

# Fungsi JSON\_EXTRACT\_PATH\_TEXT
<a name="JSON_EXTRACT_PATH_TEXT"></a>

**catatan**  
JSON\_PARSE dan fungsi terkaitnya mengurai nilai JSON sebagai SUPER, yang diurai Amazon Redshift lebih efisien daripada VARCHAR.  
Alih-alih menggunakan JSON\_EXTRACT\_PATH\_TEXT, kami sarankan Anda mengurai string JSON Anda menggunakan untuk mendapatkan nilai SUPER. [Fungsi JSON\_PARSE](JSON_PARSE.md) Kemudian, kueri elemen yang Anda inginkan menggunakan `value.attribute` sintaks. Untuk informasi lebih lanjut tentang menanyakan elemen array dalam nilai SUPER, buka. [Meminta data semi-terstruktur](query-super.md)

Fungsi JSON\_EXTRACT\_PATH\_TEXT mengembalikan nilai untuk pasangan kunci-nilai direferensikan oleh serangkaian elemen jalur dalam string JSON. Jalur JSON dapat bersarang hingga kedalaman lima tingkat. Elemen jalur peka huruf besar/kecil. Jika elemen path tidak ada dalam string JSON, JSON\_EXTRACT\_PATH\_TEXT kembali. `NULL`

Jika argumen *null\_if\_invalid* disetel ke `TRUE` dan string JSON tidak valid, fungsi kembali alih-alih mengembalikan kesalahan. `NULL`

JSON\_EXTRACT\_PATH\_TEXT memiliki ukuran data maksimum 16MB. Jadi, jika ada catatan JSON yang lebih besar dari 16MB, memprosesnya dengan JSON\_EXTRACT\_PATH\_TEXT menghasilkan kesalahan. 

Untuk informasi tentang fungsi JSON tambahan, lihat[Fungsi JSON](json-functions.md). Untuk informasi lebih lanjut tentang bekerja dengan JSON, lihat[COPY dari format JSON](copy-usage_notes-copy-from-json.md).

## Sintaksis
<a name="JSON_EXTRACT_PATH_TEXT-synopsis"></a>

```
JSON_EXTRACT_PATH_TEXT('json_string', 'path_elem' [,'path_elem'[, …] ] [, null_if_invalid ] )
```

## Argumen
<a name="JSON_EXTRACT_PATH_TEXT-arguments"></a>

 *json\_string*  
String JSON yang diformat dengan benar.

*path\_elem*  
Sebuah elemen path dalam string JSON. Satu elemen jalur diperlukan. Elemen jalur tambahan dapat ditentukan, hingga lima tingkat dalam.

*null\_if\_invalid*  
(Opsional) `BOOLEAN` Nilai yang menentukan apakah akan kembali `NULL` jika input JSON string tidak valid alih-alih mengembalikan kesalahan. Untuk kembali `NULL` jika JSON tidak valid, tentukan `TRUE` (). `t` Untuk mengembalikan kesalahan jika JSON tidak valid, tentukan `FALSE` (). `f` Nilai default-nya `FALSE`.

Dalam string JSON, Amazon Redshift `\n` mengenali sebagai karakter baris baru `\t` dan sebagai karakter tab. Untuk memuat garis miring terbalik, lepaskan dengan garis miring terbalik (). `\\` Untuk informasi selengkapnya, lihat [Karakter melarikan diri di JSON](copy-usage_notes-copy-from-json.md#copy-usage-json-escape-characters).

## Jenis pengembalian
<a name="JSON_EXTRACT_PATH_TEXT-return"></a>

`VARCHAR`  
Sebuah `VARCHAR` string yang mewakili nilai JSON direferensikan oleh elemen jalur.

## Contoh
<a name="JSON_EXTRACT_PATH_TEXT-examples"></a>

Untuk mengembalikan nilai untuk jalur`'f4', 'f6'`, gunakan contoh berikut.

```
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}','f4', 'f6');

+------------------------+
| json_extract_path_text |
+------------------------+
| star                   |
+------------------------+
```

Untuk mengembalikan kesalahan karena JSON tidak valid, gunakan contoh berikut.

```
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}','f4', 'f6');

ERROR: invalid json object {"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}
```

Untuk menyetel *null\_if\_invalid* ke *TRUE*, sehingga pernyataan mengembalikan JSON yang tidak valid alih-alih mengembalikan kesalahan, gunakan `NULL` contoh berikut.

```
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}','f4', 'f6',true);

+------------------------+
| json_extract_path_text |
+------------------------+
| NULL                   |
+------------------------+
```

Perhatikan contoh berikut, yang memilih nilai untuk jalur`'farm', 'barn', 'color'`, di mana nilai yang diambil berada di tingkat ketiga, gunakan contoh berikut. Sampel ini diformat dengan alat lint JSON, agar lebih mudah dibaca.

```
SELECT JSON_EXTRACT_PATH_TEXT('{
    "farm": {
        "barn": {
            "color": "red",
            "feed stocked": true
        }
    }
}', 'farm', 'barn', 'color');
+------------------------+
| json_extract_path_text |
+------------------------+
| red                    |
+------------------------+
```

Untuk kembali `NULL` karena `'color'` elemen hilang, gunakan contoh berikut. Sampel ini diformat dengan alat lint JSON.

```
SELECT JSON_EXTRACT_PATH_TEXT('{
    "farm": {
        "barn": {}
    }
}', 'farm', 'barn', 'color');

+------------------------+
| json_extract_path_text |
+------------------------+
| NULL                   |
+------------------------+
```

Jika JSON valid, mencoba mengekstrak elemen yang hilang kembali`NULL`.

Untuk mengembalikan nilai untuk jalur`'house', 'appliances', 'washing machine', 'brand'`, gunakan contoh berikut.

```
SELECT JSON_EXTRACT_PATH_TEXT('{
  "house": {
    "address": {
      "street": "123 Any St.",
      "city": "Any Town",
      "state": "FL",
      "zip": "32830"
    },
    "bathroom": {
      "color": "green",
      "shower": true
    },
    "appliances": {
      "washing machine": {
        "brand": "Any Brand",
        "color": "beige"
      },
      "dryer": {
        "brand": "Any Brand",
        "color": "white"
      }
    }
  }
}', 'house', 'appliances', 'washing machine', 'brand');  

+------------------------+
| json_extract_path_text |
+------------------------+
| Any Brand              |
+------------------------+
```

Contoh berikut membuat tabel sampel dan mengisinya dengan nilai SUPER, lalu mengembalikan nilai untuk jalur `'f2'` untuk kedua baris.

```
CREATE TABLE json_example(id INT, json_text SUPER);

INSERT INTO json_example VALUES
(1, JSON_PARSE('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}')),
(2, JSON_PARSE('{
    "farm": {
        "barn": {
            "color": "red",
            "feed stocked": true
        }
    }
}'));

SELECT * FROM json_example;
id          | json_text
------------+--------------------------------------------
1           | {"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}
2           | {"farm":{"barn":{"color":"red","feed stocked":true}}}
 

SELECT id, JSON_EXTRACT_PATH_TEXT(JSON_SERIALIZE(json_text), 'f2') FROM json_example;
         
id          | json_text
------------+--------------------------------------------
1           | {"f3":1}
2           |
```

Perhatikan contoh pernyataan berikut. *Path\_elem* yang disediakan adalah NULL, jadi JSON\_EXTRACT\_PATH\_TEXT mengembalikan NULL terlepas dari nilai parameter lainnya. 

```
--Statement where path_elem is NULL and json_string is valid JSON.
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}',NULL);

 json_extract_path_text
------------------------
                   NULL

--Statement where only one path_elem is NULL.
SELECT JSON_EXTRACT_PATH_TEXT('{"f2":{"f3":1},"f4":{"f5":99,"f6":"star"}}','f4',NULL);

 json_extract_path_text
------------------------
                   NULL
                   
--Statement where path_elem is NULL and json_string is invalid JSON.
SELECT json_extract_path_text('invalid_json', NULL);

 json_extract_path_text
------------------------
                   NULL

--Statement where path_elem is NULL and null_if_invalid is FALSE.
SELECT json_extract_path_text(NULL, 0, FALSE);

 json_extract_path_text
------------------------
                   NULL
```

Perhatikan contoh pernyataan berikut. *Ketika *null\_if\_invalid TRUE, JSON\_EXTRACT\_PATH\_TEXT mengembalikan NULL ketika json\_string JSON tidak valid*.* *Jika *null\_if\_invalid adalah FALSE* atau tidak disetel, fungsi mengembalikan kesalahan ketika json\_string tidak valid.*

```
--Statement with invalid JSON where null_if_invalid is TRUE.
SELECT json_extract_path_text('invalid_json', 0, TRUE);

 json_extract_path_text
------------------------
                   NULL
                                                    
--Statement with invalid JSON where null_if_invalid is FALSE.
SELECT json_extract_path_text('invalid_json', 0, FALSE);

ERROR:  JSON parsing error
```

Pertimbangkan contoh berikut, di mana *json\_string adalah JSON* yang valid, dan *path\_elem* mengacu pada nilai JSON. `null` Dalam hal ini, JSON\_EXTRACT\_PATH\_TEXT mengembalikan NULL. *Demikian pula, ketika *path\_elem* mengacu pada nilai yang tidak ada, JSON\_EXTRACT\_PATH\_TEXT mengembalikan NULL, terlepas dari nilai null\_if\_invalid.*

```
--Statement selecting a null value.
SELECT json_extract_path_text('[null]', 0);

  json_extract_path_text  
-------------------------
                    NULL   
                             
--Statement selecting a non-existing value.               
SELECT json_extract_path_text('{}', 'a');
       
  json_extract_path_text  
-------------------------
                    NULL
```