

 Amazon Redshift tidak akan lagi mendukung pembuatan Python UDFs baru mulai Patch 198. Python yang ada UDFs akan terus berfungsi hingga 30 Juni 2026. Untuk informasi lebih lanjut, 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/). 

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

# Memuat data semi-terstruktur ke Amazon Redshift
<a name="ingest-super"></a>

Gunakan tipe data SUPER untuk mengurai dan menanyakan data hierarkis dan generik di Amazon Redshift. Amazon Redshift memperkenalkan data [Fungsi JSON\$1PARSE](JSON_PARSE.md) to parse dalam format JSON dan mengubahnya menjadi representasi SUPER. Amazon Redshift juga mendukung pemuatan kolom SUPER menggunakan perintah COPY. Format file yang didukung adalah format JSON, Avro, teks, nilai dipisahkan koma (CSV), Parket, dan ORC.

Anda dapat menggunakan JSON\$1PARSE untuk menyisipkan dan memperbarui data JSON ke kolom SUPER, atau menggunakan COPY untuk memuat data JSON ke Amazon Redshift dari sumber luar seperti dari bucket Amazon S3.

**Topics**
+ [Menggunakan JSON\$1PARSE untuk menyisipkan data ke kolom SUPER](parse_json.md)
+ [Menggunakan COPY untuk memuat data ke kolom SUPER](copy_json.md)

# Menggunakan JSON\$1PARSE untuk menyisipkan data ke kolom SUPER
<a name="parse_json"></a>

Anda dapat menyisipkan atau memperbarui data JSON ke dalam kolom SUPER menggunakan. [Fungsi JSON\$1PARSE](JSON_PARSE.md) Fungsi mem-parsing data dalam format JSON dan mengubahnya menjadi tipe data SUPER, yang dapat Anda gunakan dalam pernyataan INSERT atau UPDATE. 

Contoh berikut menyisipkan data JSON ke dalam kolom SUPER. Jika fungsi JSON\$1PARSE tidak ada dalam kueri, Amazon Redshift memperlakukan nilai sebagai string tunggal, bukan string berformat JSON yang harus diurai.

```
--Drop the table if it exists.
DROP TABLE IF EXISTS test_json;

--Create the table.
CREATE TABLE test_json (all_data SUPER);

--Populate the table.
INSERT INTO test_json VALUES (JSON_PARSE('
{
    "name": {
        "first_name": "Jake",
        "last_name": "Smith"
    },
    "age": 30,
    "hobby": "Biking"
}'
) );

SELECT * FROM test_json;

 all_data  
---------
{"name":{"first_name":"Jake","last_name":"Smith"},"age":30,"hobby":"Biking"}
```

# Menggunakan COPY untuk memuat data ke kolom SUPER
<a name="copy_json"></a>

Di bagian berikut, Anda dapat mempelajari berbagai cara menggunakan perintah COPY untuk memuat data JSON ke Amazon Redshift. Untuk informasi tentang parameter format data yang digunakan Amazon Redshift untuk mengurai JSON dalam perintah COPY, baca deskripsi parameter di[JSON format for COPY](copy-parameters-data-format.md#copy-json). [Parameter format data](copy-parameters-data-format.md)

**Topics**
+ [Menyalin data dari JSON dan Avro](#copy_json-from-JSON)
+ [Menyalin data dari teks dan CSV](#copy_json-from-text-csv)
+ [Menyalin data dari format kolom Parket dan ORC](#copy_json-from-parquet-orc)

## Menyalin data dari JSON dan Avro
<a name="copy_json-from-JSON"></a>

Amazon Redshift menyediakan metode berikut untuk menyerap dokumen JSON menggunakan COPY, bahkan dengan struktur JSON yang sepenuhnya atau sebagian tidak diketahui: 
+ Simpan data yang berasal dari dokumen JSON ke dalam satu kolom data SUPER menggunakan opsi. `noshred` Metode ini berguna ketika skema tidak diketahui atau diharapkan berubah. Dengan demikian, metode ini memudahkan untuk menyimpan seluruh tupel dalam satu kolom SUPER.
+ Rusak dokumen JSON menjadi beberapa kolom Amazon Redshift menggunakan `auto` opsi or. `jsonpaths` Atribut dapat berupa skalar Amazon Redshift atau nilai SUPER. 

Anda dapat menggunakan opsi ini dengan format JSON atau Avro. Untuk informasi lebih lanjut tentang opsi JSON seperti`noshred`,`auto`, dan`jsonpaths`, lihat[JSON format for COPY](copy-parameters-data-format.md#copy-json).

Ukuran maksimum untuk objek JSON di Amazon Redshift adalah 4 MB, yang berlaku sebelum penghancuran atau penguraian apa pun.

### Metode 1: Menyalin dokumen JSON ke dalam satu kolom data SUPER menggunakan `noshred`
<a name="copy_json-one-column"></a>

Anda dapat menyalin seluruh dokumen JSON ke dalam kolom data SUPER tunggal menggunakan `noshred` opsi dalam perintah COPY. Pertimbangkan contoh berikut:

1. Buat tabel dengan kolom data SUPER tunggal.

   ```
   CREATE TABLE region_nations_noshred (rdata SUPER);
   ```

1. Salin data dari Amazon S3 ke kolom data SUPER tunggal. Untuk menyerap data sumber JSON ke dalam satu kolom data SUPER, tentukan `noshred` opsi dalam klausa FORMAT JSON.

   ```
   COPY region_nations_noshred FROM 's3://redshift-downloads/semistructured/tpch-nested/data/json/region_nation'
   REGION 'us-east-1' IAM_ROLE 'arn:aws:iam::xxxxxxxxxxxx:role/Redshift-S3'
   FORMAT JSON 'noshred';
   ```

   Setelah COPY berhasil menelan JSON, tabel Anda memiliki kolom data `rdata` SUPER yang berisi data dari seluruh objek JSON. Data yang dicerna mempertahankan semua properti hierarki JSON. Namun, daun dikonversi ke jenis skalar Amazon Redshift untuk pemrosesan kueri yang efisien.

1. Gunakan query berikut untuk mengambil string JSON asli.

   ```
   SELECT rdata FROM region_nations_noshred;
   ```

   Saat Amazon Redshift menghasilkan kolom data SUPER, kolom tersebut dapat diakses menggunakan JDBC sebagai string melalui serialisasi JSON. Untuk informasi selengkapnya, lihat [Serialisasi JSON bersarang kompleks](serializing-complex-JSON.md).

### Metode 2: Menyalin dokumen JSON ke beberapa kolom data SUPER
<a name="copy_json-multiple-columns"></a>

Anda dapat menghancurkan dokumen JSON menjadi beberapa kolom yang dapat berupa kolom data SUPER atau jenis skalar Amazon Redshift. Amazon Redshift menyebarkan bagian yang berbeda dari objek JSON ke kolom yang berbeda. Pertimbangkan contoh berikut:

1. Buat tabel dengan beberapa kolom untuk menahan JSON yang diparut.

   ```
   CREATE TABLE region_nations
   (
    r_regionkey smallint
    ,r_name varchar
    ,r_comment varchar
    ,r_nations super
    );
   ```

1. Untuk menyalin JSON ke dalam `region_nations` tabel, tentukan AUTO opsi di Format JSON klausa untuk membagi nilai JSON di beberapa kolom. COPY mencocokkan atribut JSON tingkat atas dengan nama kolom dan memungkinkan nilai bersarang untuk dicerna sebagai nilai SUPER, seperti array dan objek JSON. 

   ```
   COPY region_nations FROM 's3://redshift-downloads/semistructured/tpch-nested/data/json/region_nation'
   REGION 'us-east-1' IAM_ROLE 'arn:aws:iam::xxxxxxxxxxxx:role/Redshift-S3'
   FORMAT JSON 'auto';
   ```

   Ketika nama atribut JSON dalam kasus atas dan bawah campuran, tentukan `auto ignorecase` opsi dalam klausa FORMAT JSON. Untuk informasi selengkapnya tentang perintah COPY, lihat[Muat dari data JSON menggunakan opsi 'auto ignorecase'](r_COPY_command_examples.md#copy-from-json-examples-using-auto-ignorecase).

Dalam beberapa kasus, ada ketidakcocokan antara nama kolom dan atribut JSON atau atribut untuk memuat bersarang lebih dari satu level. Jika demikian, gunakan `jsonpaths` file untuk memetakan atribut JSON secara manual ke kolom Amazon Redshift. Pertimbangkan contoh berikut: 

1. Buat tabel dengan beberapa kolom untuk menahan JSON yang diparut.

   ```
   CREATE TABLE region_nations
   (
    r_regionkey smallint
    ,r_name varchar
    ,r_comment varchar
    ,r_nations super
    );
   ```

1. Dalam hal ini, nama kolom tidak cocok dengan atribut JSON. Anda dapat membuat `jsonpaths` file yang memetakan jalur atribut ke kolom tabel berdasarkan posisinya dalam `jsonpaths` array, seperti berikut ini:

   ```
   {"jsonpaths": [
          "$.r_regionkey",
          "$.r_name",
          "$.r_comment",
          "$.r_nations
       ]
   }
   ```

1. Gunakan lokasi `jsonpaths` file sebagai argumen ke opsi FORMAT JSON di COPY.

   ```
   COPY nations FROM 's3://redshift-downloads/semistructured/tpch-nested/data/json/region_nation'
   REGION 'us-east-1' IAM_ROLE 'arn:aws:iam::xxxxxxxxxxxx:role/Redshift-S3'
   FORMAT JSON 's3://redshift-downloads/semistructured/tpch-nested/data/jsonpaths/nations_jsonpaths.json';
   ```

1. Gunakan kueri berikut untuk mengakses tabel yang menunjukkan penyebaran data ke beberapa kolom. Kolom data SUPER dicetak menggunakan format JSON.

   ```
   SELECT r_regionkey,r_name,r_comment,r_nations[0].n_nationkey FROM region_nations ORDER BY 1,2,3 LIMIT 1;
   ```

`jsonpaths`file memetakan bidang dalam dokumen JSON ke kolom tabel. Anda dapat mengekstrak kolom tambahan, seperti distribusi dan kunci pengurutan, sambil tetap memuat dokumen lengkap sebagai kolom SUPER. Kueri berikut memuat dokumen lengkap ke `nations` kolom. `name`Kolom adalah kunci sortir dan `regionkey` kolom adalah kunci distribusi. Pertimbangkan contoh berikut:

1. Buat tabel dengan beberapa kolom untuk menahan JSON yang diparut.

   ```
   CREATE TABLE nations_sorted (
       regionkey smallint,
       name varchar,
       nations super
   ) DISTKEY(regionkey) SORTKEY(name);
   ```

1. Petakan root jsonpath “\$1” ke root dokumen sebagai berikut:

   ```
   {"jsonpaths": [
          "$.r_regionkey",
          "$.r_name",
          "$"
       ]
   }
   ```

1. Gunakan lokasi `jsonpaths` file sebagai argumen ke opsi FORMAT JSON di COPY.

   ```
   COPY nations_sorted FROM 's3://redshift-downloads/semistructured/tpch-nested/data/json/region_nation'
   REGION 'us-east-1' IAM_ROLE 'arn:aws:iam::xxxxxxxxxxxx:role/Redshift-S3'
   FORMAT JSON 's3://redshift-downloads/semistructured/tpch-nested/data/jsonpaths/nations_sorted_jsonpaths.json';
   ```

Untuk informasi lebih lanjut tentang penggunaan`jsonpaths`, lihat[COPY dari format JSON](copy-usage_notes-copy-from-json.md). 

## Menyalin data dari teks dan CSV
<a name="copy_json-from-text-csv"></a>

Amazon Redshift mewakili kolom SUPER dalam format teks dan CSV sebagai JSON serial. Pemformatan JSON yang valid diperlukan agar kolom SUPER dimuat dengan informasi tipe yang benar. Unquote objek, array, angka, boolean, dan nilai null. Bungkus nilai string dalam tanda kutip ganda. Kolom SUPER menggunakan aturan pelolosan standar untuk format teks dan CSV. 

 Saat menyalin dari CSV, pembatas diloloskan sesuai dengan standar CSV. Pertimbangkan contoh berikut: 

```
CREATE TABLE region_nations
(
 r_regionkey smallint
 ,r_name varchar
 ,r_comment varchar
 ,r_nations super
 );
 
 COPY region_nations FROM 's3://redshift-downloads/semistructured/tpch-nested/data/csv/region_nation'
REGION 'us-east-1' IAM_ROLE 'arn:aws:iam::xxxxxxxxxxxx:role/Redshift-S3'
FORMAT CSV;
```

Saat menyalin dari teks, jika pembatas yang dipilih mungkin juga muncul di bidang SUPER, gunakan opsi ESCAPE selama COPY dan UNLOAD. Pertimbangkan contoh berikut:

```
CREATE TABLE region_nations
(
 r_regionkey smallint
 ,r_name varchar
 ,r_comment varchar
 ,r_nations super
 );
 
COPY region_nations FROM 's3://redshift-downloads/semistructured/tpch-nested/data/text/region_nation'
REGION 'us-east-1' IAM_ROLE 'arn:aws:iam::xxxxxxxxxxxx:role/Redshift-S3'
DELIMITER ','
ESCAPE;
```

## Menyalin data dari format kolom Parket dan ORC
<a name="copy_json-from-parquet-orc"></a>

Jika data semi-terstruktur atau bersarang Anda sudah tersedia dalam format Apache Parquet atau Apache ORC, Anda dapat menggunakan perintah COPY untuk menyerap data ke Amazon Redshift. 

Struktur tabel Amazon Redshift harus sesuai dengan jumlah kolom dan tipe data kolom dari file Parket atau ORC. Dengan menentukan SERIALIZETOJSON dalam perintah COPY, Anda dapat memuat semua jenis kolom dalam file yang sejajar dengan kolom SUPER dalam tabel sebagai SUPER. Ini termasuk tipe struktur dan array.

Contoh berikut menggunakan format Parket:

```
COPY region_nations FROM 's3://redshift-downloads/semistructured/tpch-nested/data/parquet/region_nation'
REGION 'us-east-1' IAM_ROLE 'arn:aws:iam::xxxxxxxxxxxx:role/Redshift-S3'
FORMAT PARQUET SERIALIZETOJSON;
```

Contoh berikut menggunakan format ORC.

```
COPY region_nations FROM 's3://redshift-downloads/semistructured/tpch-nested/data/orc/region_nation'
IAM_ROLE 'arn:aws:iam::xxxxxxxxxxxx:role/Redshift-S3'
FORMAT ORC SERIALIZETOJSON;
```

Saat atribut tipe data tanggal atau waktu ada di ORC, Amazon Redshift mengonversinya menjadi varchar setelah menyandikannya di SUPER.