View a markdown version of this page

Memuat data dari tabel Amazon DynamoDB - Amazon Redshift

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 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.

Memuat data dari tabel Amazon DynamoDB

Anda dapat menggunakan perintah COPY untuk memuat tabel dengan data dari satu tabel Amazon DynamoDB.

penting

Tabel Amazon DynamoDB yang menyediakan data harus dibuat di Wilayah yang sama AWS dengan cluster Anda kecuali Anda menggunakan REGION opsi untuk menentukan Wilayah AWS tempat tabel Amazon DynamoDB berada.

Perintah COPY menggunakan arsitektur Amazon Redshift massively parallel processing (MPP) untuk membaca dan memuat data secara paralel dari tabel Amazon DynamoDB. Anda dapat memanfaatkan pemrosesan paralel secara maksimal dengan mengatur gaya distribusi pada tabel Amazon Redshift Anda. Untuk informasi selengkapnya, lihat Distribusi data untuk optimasi kueri.

penting

Saat perintah COPY membaca data dari tabel Amazon DynamoDB, transfer data yang dihasilkan adalah bagian dari throughput yang disediakan tabel tersebut.

Untuk menghindari konsumsi throughput baca yang disediakan dalam jumlah berlebihan, sebaiknya jangan memuat data dari tabel Amazon DynamoDB yang ada di lingkungan produksi. Jika Anda memuat data dari tabel produksi, sebaiknya setel opsi READRATIO jauh lebih rendah daripada persentase rata-rata throughput yang disediakan yang tidak digunakan. Pengaturan READRATIO rendah akan membantu meminimalkan masalah pelambatan. Untuk menggunakan seluruh throughput yang disediakan dari tabel Amazon DynamoDB, setel READRATIO ke 100.

Perintah COPY mencocokkan nama atribut dalam item yang diambil dari tabel DynamoDB dengan nama kolom di tabel Amazon Redshift yang ada dengan menggunakan aturan berikut:

  • Kolom tabel Amazon Redshift dicocokkan secara tidak peka huruf besar/kecil dengan atribut item Amazon DynamoDB. Jika item dalam tabel DynamoDB berisi beberapa atribut yang berbeda hanya dalam kasus, seperti Harga dan HARGA, perintah COPY akan gagal.

  • Kolom tabel Amazon Redshift yang tidak cocok dengan atribut di tabel Amazon DynamoDB dimuat sebagai NULL atau kosong, tergantung pada nilai yang ditentukan dengan opsi EMPTYASNULL dalam perintah. MENYONTEK

  • Atribut Amazon DynamoDB yang tidak cocok dengan kolom di tabel Amazon Redshift akan dibuang. Atribut dibaca sebelum dicocokkan, sehingga bahkan atribut yang dibuang menghabiskan sebagian dari throughput yang disediakan tabel tersebut.

  • Hanya atribut Amazon DynamoDB dengan tipe data STRING dan NUMBER skalar yang didukung. Jenis data Amazon DynamoDB BINARY dan SET tidak didukung. Jika perintah COPY mencoba memuat atribut dengan tipe data yang tidak didukung, perintah akan gagal. Jika atribut tidak cocok dengan kolom tabel Amazon Redshift, COPY tidak mencoba memuatnya, dan tidak menimbulkan kesalahan.

Perintah COPY menggunakan sintaks berikut untuk memuat data dari tabel Amazon DynamoDB:

COPY <redshift_tablename> FROM 'dynamodb://<dynamodb_table_name>' authorization readratio '<integer>';

Nilai untuk otorisasi adalah AWS kredenSIAL yang diperlukan untuk mengakses tabel Amazon DynamoDB. Jika kredenSIAL ini sesuai dengan pengguna, pengguna tersebut harus memiliki izin untuk MEMINDAI dan MENDESKRIPSI tabel Amazon DynamoDB yang sedang dimuat.

Nilai untuk otorisasi memberikan otor AWS isasi yang dibutuhkan cluster Anda untuk mengakses tabel Amazon DynamoDB. Izin harus menyertakan SCAN dan DESCRIBE untuk tabel Amazon DynamoDB yang sedang dimuat. Untuk informasi lebih lanjut tentang izin yang diperlukan, lihat Izin IAM untuk COPY, UNLOAD, dan CREATE LIBRARY. Metode otentikasi yang lebih disukai adalah menentukan parameter IAM_ROLE dan memberikan Amazon Resource Name (ARN) untuk peran IAM dengan izin yang diperlukan. Untuk informasi selengkapnya, lihat Role-based kontrol akses.

Untuk mengotentikasi menggunakan parameter IAM_ROLE, <aws-account-id> dan <role-name> seperti yang ditunjukkan dalam sintaks berikut.

IAM_ROLE 'arn:aws:iam::<aws-account-id>:role/<role-name>'

Contoh berikut menunjukkan otentikasi menggunakan peran IAM.

COPY favoritemovies FROM 'dynamodb://ProductCatalog' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole';

Untuk informasi selengkapnya tentang opsi otorisasi lainnya, lihat Parameter otorisasi

Jika Anda ingin memvalidasi data Anda tanpa benar-benar memuat tabel, gunakan opsi NOLOAD dengan perintahMENYONTEK.

Contoh berikut memuat tabel FAVORITEMOVIES dengan data dari tabel DynamoDB my-favorite-movies-table. Aktivitas baca dapat menghabiskan hingga 50% dari throughput yang disediakan.

COPY favoritemovies FROM 'dynamodb://my-favorite-movies-table' IAM_ROLE 'arn:aws:iam::0123456789012:role/MyRedshiftRole' READRATIO 50;

Untuk memaksimalkan throughput, perintah COPY memuat data dari tabel Amazon DynamoDB secara paralel di seluruh node komputasi di cluster.

Throughput yang disediakan dengan kompresi otomatis

Secara default, perintah COPY menerapkan kompresi otomatis setiap kali Anda menentukan tabel target kosong tanpa pengkodean kompresi. Analisis kompresi otomatis awalnya mengambil sampel sejumlah besar baris dari tabel Amazon DynamoDB. Ukuran sampel didasarkan pada nilai parameter COMPROWS. Defaultnya adalah 100.000 baris per irisan.

Setelah pengambilan sampel, baris sampel dibuang dan seluruh tabel dimuat. Akibatnya, banyak baris dibaca dua kali. Untuk informasi selengkapnya tentang cara kerja kompresi otomatis, lihatMemuat tabel dengan kompresi otomatis.

penting

Saat perintah COPY membaca data dari tabel Amazon DynamoDB, termasuk baris yang digunakan untuk pengambilan sampel, transfer data yang dihasilkan adalah bagian dari throughput yang disediakan tabel tersebut.

Memuat data multibyte dari Amazon DynamoDB

Jika data Anda menyertakan karakter multibyte non-ASCII (seperti karakter Mandarin atau Cyrillic), Anda harus memuat data ke kolom VARCHAR. Tipe data VARCHAR mendukung UTF-8 karakter empat byte, tetapi tipe data CHAR hanya menerima karakter ASCII byte tunggal. Anda tidak dapat memuat karakter lima byte atau lebih lama ke tabel Amazon Redshift. Untuk informasi lebih lanjut tentang CHAR dan VARCHAR, lihatJenis Data.