

 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.

# Tipe data SUPER dan tampilan terwujud
<a name="r_SUPER_MV"></a>

Dengan Amazon Redshift, Anda dapat menggunakan tampilan terwujud untuk meningkatkan kinerja dan fleksibilitas kueri yang dijalankan terhadap tipe data SUPER. Tipe data SUPER memungkinkan Anda menyimpan superset kolom dari tabel dasar dalam tampilan terwujud, memungkinkan Anda menanyakan tampilan terwujud secara langsung tanpa bergabung dengan tabel dasar. Bagian berikut menunjukkan cara membuat dan menggunakan tampilan terwujud dengan tipe data SUPER di Amazon Redshift.

Amazon Redshift mendukung tampilan terwujud yang menggabungkan kolom tipe data SUPER dan kueri PartiQL. Tampilan terwujud dapat disegarkan secara bertahap, sedangkan Amazon Redshift hanya memperbarui data yang telah berubah di tabel dasar sejak operasi penyegaran terakhir. Pendekatan pembaruan selektif ini membuat proses penyegaran lebih efisien daripada perhitungan ulang penuh. Untuk informasi lebih lanjut tentang tampilan terwujud, lihat[Tampilan terwujud di Amazon Redshift](materialized-view-overview.md).

## Mempercepat kueri PartiQL
<a name="r_accelerate_mv"></a>

Anda dapat menggunakan tampilan terwujud untuk mempercepat kueri PartiQL yang menavigasi dan/atau menghapus data hierarkis di kolom SUPER. Dengan membuat satu atau beberapa tampilan terwujud untuk menghancurkan nilai SUPER menjadi beberapa kolom dan memanfaatkan organisasi kolumnar kueri analitik Amazon Redshift, pada dasarnya Anda dapat mengekstrak dan menormalkan data bersarang. Tingkat normalisasi tergantung pada seberapa banyak upaya yang Anda lakukan untuk mengubah data SUPER menjadi data kolumnar konvensional. 

Topik berikut menampilkan contoh pemecahan, atau penghancuran, data kompleks menjadi kolom yang lebih kecil, serta membuat kolom skalar dari data yang diparut untuk meningkatkan kinerja.

**Topics**
+ [Mempercepat kueri PartiQL](#r_accelerate_mv)
+ [Merobek-robek data semi-terstruktur ke dalam kolom SUPER dengan tampilan terwujud](r_shred_super.md)
+ [Membuat kolom skalar Amazon Redshift dari data yang diparut](r_create_scalar.md)

# Merobek-robek data semi-terstruktur ke dalam kolom SUPER dengan tampilan terwujud
<a name="r_shred_super"></a>

Dengan Amazon Redshift, Anda dapat meningkatkan kinerja kueri dengan merobek-robek data ke dalam kolom SUPER menggunakan tampilan terwujud. Penghancuran mengacu pada proses memecah tipe data yang kompleks seperti JSON semi-terstruktur atau XMLmenjadi kolom yang lebih kecil dan datar. Kolom SUPER adalah bentuk khusus penyimpanan kolumnar yang dioptimalkan untuk memindai data parut dengan cepat. 

Bagian berikut menjelaskan langkah-langkah dan pertimbangan untuk merobek-robek data ke dalam kolom SUPER menggunakan tampilan terwujud di Amazon Redshift.

Contoh berikut menunjukkan definisi tampilan terwujud yang mencabik-cabik data bersarang dengan kolom yang dihasilkan masih menjadi tipe data SUPER.

```
SELECT c.c_name, o.o_orderstatus
FROM customer_orders_lineitem c, c.c_orders o;
```

Contoh berikut menunjukkan definisi tampilan terwujud yang membuat kolom skalar Amazon Redshift konvensional dari data yang diparut.

```
SELECT c.c_name, c.c_orders[0].o_totalprice
FROM customer_orders_lineitem c;
```

Anda dapat membuat satu tampilan terwujud super\$1mv untuk mempercepat kedua kueri.

Untuk menjawab kueri pertama, Anda harus mewujudkan atribut o\$1orderstatus. Anda dapat menghilangkan atribut c\$1name karena tidak melibatkan navigasi bersarang atau unnesting. Anda juga harus menyertakan dalam tampilan terwujud atribut c\$1custkey dari customer\$1orders\$1lineitem untuk dapat menggabungkan tabel dasar dengan tampilan terwujud.

Untuk menjawab kueri kedua, Anda juga harus mewujudkan atribut o\$1totalprice dan indeks array o\$1idx dari c\$1orders. Oleh karena itu, Anda dapat mengakses indeks 0 dari c\$1orders.

```
CREATE MATERIALIZED VIEW super_mv distkey(c_custkey) sortkey(c_custkey) AS (
  SELECT c_custkey, o.o_orderstatus, o.o_totalprice, o_idx
  FROM customer_orders_lineitem c, c.c_orders o AT o_idx
);
```

Atribut o\$1orderstatus dan o\$1totalprice dari tampilan super\$1mv yang terwujud adalah SUPER.

Tampilan super\$1mv yang terwujud akan disegarkan secara bertahap setelah perubahan pada tabel dasar customer\$1orders\$1lineitem.

```
REFRESH MATERIALIZED VIEW super_mv;
INFO: Materialized view super_mv was incrementally updated successfully.
```

Untuk menulis ulang kueri PartiQL pertama sebagai kueri SQL biasa, bergabunglah dengan customer\$1orders\$1lineitem dengan super\$1mv sebagai berikut.

```
SELECT c.c_name, v.o_orderstatus
FROM customer_orders_lineitem c 
JOIN super_mv v ON c.c_custkey = v.c_custkey;
```

Demikian pula, Anda dapat menulis ulang kueri PartiQL kedua. Contoh berikut menggunakan filter pada o\$1idx = 0.

```
SELECT c.c_name, v.o_totalprice
FROM customer_orders_lineitem c 
JOIN super_mv v ON c.c_custkey = v.c_custkey
WHERE v.o_idx = 0;
```

Dalam perintah CREATE MATERIALIZED VIEW, tentukan c\$1custkey sebagai kunci distribusi dan kunci sortir untuk super\$1mv. Amazon Redshift melakukan gabungan gabungan yang efisien, dengan asumsi bahwa c\$1custkey juga merupakan kunci distribusi dan kunci pengurutan customer\$1orders\$1lineitem. Jika bukan itu masalahnya, Anda dapat menentukan c\$1custkey sebagai kunci pengurutan dan kunci distribusi customer\$1orders\$1lineitem sebagai berikut.

```
ALTER TABLE customer_orders_lineitem
ALTER DISTKEY c_custkey, ALTER SORTKEY (c_custkey);
```

Gunakan pernyataan EXPLOW untuk memverifikasi bahwa Amazon Redshift melakukan gabungan gabungan pada kueri yang ditulis ulang.

```
EXPLAIN
      SELECT c.c_name, v.o_orderstatus
      FROM customer_orders_lineitem c JOIN super_mv v ON c.c_custkey = v.c_custkey;
      
      QUERY PLAN                                              
      ------------------------------------------------------------------------------------------------------
      XN Merge Join DS_DIST_NONE  (cost=0.00..34701.82 rows=1470776 width=27)
      Merge Cond: ("outer".c_custkey = "inner".c_custkey)
      ->  XN Seq Scan on mv_tbl__super_mv__0 derived_table2  (cost=0.00..14999.86 rows=1499986 width=13)
      ->  XN Seq Scan on customer_orders_lineitem c  (cost=0.00..999.96 rows=99996 width=30)
      (4 rows)
```

# Membuat kolom skalar Amazon Redshift dari data yang diparut
<a name="r_create_scalar"></a>

Data tanpa skema yang disimpan di SUPER dapat memengaruhi kinerja Amazon Redshift. Misalnya, filter predikat atau bergabung dengan kondisi karena pemindaian terbatas rentang tidak dapat menggunakan peta zona secara efektif. Pengguna dan alat BI dapat menggunakan pandangan terwujud sebagai presentasi data konvensional dan meningkatkan kinerja kueri analitis.

Kueri berikut memindai tampilan `super_mv` dan filter yang terwujud. `o_orderstatus`

```
SELECT c.c_name, v.o_totalprice
FROM customer_orders_lineitem c
JOIN super_mv v ON c.c_custkey = v.c_custkey
WHERE v.o_orderstatus = 'F';
```

Periksa `stl_scan` untuk memverifikasi bahwa Amazon Redshift tidak dapat menggunakan peta zona secara efektif pada pemindaian terbatas rentang. `o_orderstatus`

```
SELECT slice, is_rrscan FROM stl_scan
WHERE query = pg_last_query_id() AND perm_table_name LIKE '%super_mv%';

 slice | is_rrscan 
-------+-----------
     0 | f
     1 | f
     5 | f
     4 | f
     2 | f
     3 | f
(6 rows)
```

Contoh berikut menyesuaikan tampilan terwujud `super_mv` untuk membuat kolom skalar dari data yang diparut. Dalam hal ini, Amazon Redshift beralih `o_orderstatus` dari SUPER ke VARCHAR. Selain itu, tentukan `o_orderstatus` sebagai kunci pengurutan untuk`super_mv`.

```
CREATE MATERIALIZED VIEW super_mv distkey(c_custkey) sortkey(c_custkey, o_orderstatus) AS (
  SELECT c_custkey, o.o_orderstatus::VARCHAR AS o_orderstatus, o.o_totalprice, o_idx
  FROM customer_orders_lineitem c, c.c_orders o AT o_idx
);
```

Setelah menjalankan kembali kueri, verifikasi bahwa Amazon Redshift sekarang dapat menggunakan peta zona.

```
SELECT v.o_totalprice
FROM super_mv v
WHERE v.o_orderstatus = 'F';
```

Anda dapat memverifikasi bahwa pemindaian terbatas rentang sekarang menggunakan peta zona sebagai berikut.

```
SELECT slice, is_rrscan FROM stl_scan
WHERE query = pg_last_query_id() AND perm_table_name LIKE '%super_mv%';

 slice | is_rrscan 
-------+-----------
     0 | t
     1 | t
     2 | t
     3 | t
     4 | t
     5 | t
(6 rows)
```