Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Skema unnesting
Saat mengintegrasikan dengan layanan analitik melalui Zero-ETL, Anda dapat memilih bagaimana struktur bersarang direpresentasikan dalam tabel target. AWS Glue Zero-ETL menyediakan opsi unnesting skema untuk meratakan struktur data yang kompleks menjadi format yang lebih ramah analitik.
Opsi unnesting
Saat membuat integrasi nol-ETL dengan sumber, Anda dapat memilih dari opsi unnesting berikut. Opsi ini sesuai dengan nilai enumerasi tertentu yang akan Anda gunakan saat memanggil API. CreateIntegrationTableProperty Untuk semua opsi unnest, kami akan melintasi sebagian besar lapisan dalam dan memetakan tipe DDB untuk menargetkan tipe spark/iceberg primitif dengan upaya terbaik. Jenis pemetaan antara sumber DDB dan tabel target adalah sebagai berikut:
| Tipe data sumber DDB | Jenis data tabel target |
|---|---|
"S" | StringType |
"B" | BinaryType |
"N" | DoubleType |
"BOOL" | BooleanType |
"SS" | ArrayType(StringType) |
"NS" | ArrayType(DoubleType) |
"BS" | ArrayType(BinaryType) |
"L" | ArrayType(StringType) |
"NULL" | Abaikan |
"M" | StructType (ATAS/KATA BENDA) |
- Tidak ada unnesting - NO_UNNEST
-
Nilai API:
NO_UNNESTMempertahankan struktur bersarang asli item Amazon DynamoDB. Peta dan daftar disimpan sebagai kolom terstruktur dalam target.
Terbaik untuk: Melestarikan struktur yang tepat dari data Amazon DynamoDB Anda saat alat analisis Anda dapat bekerja dengan data bersarang.
- Tingkat atas - TOP_LEVEL
-
Nilai API:
TOP_LEVELRatakan tingkat atas peta bersarang menjadi kolom individual. Struktur daftar tetap bersarang.
Mempertahankan struktur yang tepat dari data Amazon DynamoDB Anda saat alat analisis Anda dapat bekerja dengan data bersarang dengan semua informasi tipe DDB dihapus.
Terbaik untuk: Menyeimbangkan antara pelestarian struktur data dan kesederhanaan kueri saat item tabel Amazon DynamoDB Anda memiliki skema yang konsisten.
- Unnest semua tingkatan - PENUH (default)
-
Nilai API:
FULLSecara rekursif meratakan semua struktur bersarang (peta dan daftar) ke dalam kolom individual dengan notasi titik untuk penamaan.
Terbaik untuk: Memaksimalkan kesederhanaan kueri saat bekerja dengan struktur bersarang dan alat analitik yang lebih menyukai skema datar.
catatan
Unnesting penuh dapat menyebabkan tabel yang sangat lebar dengan banyak kolom jika data DynamoDB Anda memiliki struktur variabel atau sangat bersarang.
contoh Menggunakan opsi unnesting di API
Saat mengonfigurasi skema unnesting melalui CreateIntegrationTableProperty API, tentukan opsi unnesting di parameter: UnnestSpec
aws glue create-integration-table-property --resource-arn "arn:aws:glue:us-east-1:123456789012:database/my_db" --table-name "my-table" --cli-input-json '{ "TargetTableConfig": { "UnnestSpec": "FULL", "TargetTableName": "my-target-table", } }'
Contoh yang tidak bersarang
Pertimbangkan item DynamoDB dengan struktur berikut:
// Input DynamoDB Record { "Item": { "col_1": { "S": "value_1" }, "col_2": { "M": { "col_3": { "M": { "id": { "S": "value_3" } } }, "col_4": { "BOOL": true } } } } }
Contoh NO_UNNEST
Dengan NO_UNNEST, seluruh baris disimpan dalam satu kolom ditambah kunci utama. Informasi tipe DynamoDB dipertahankan. Ini menjaga kompatibilitas dengan pola kueri Redshift.
Tabel Iceberg yang dihasilkan (dengan asumsi col_1 adalah kunci utama):
| col_1 (string) | nilai (struct) |
|---|---|
| nilai_1 |
|
Kueri perlu menggunakan pola akses struct dan array:
SELECT value.col_1, value.col_2.M.col_3.M.id.S, value.col_2.M.col_4.BOOL FROM product_table;
Contoh TOP_LEVEL
Dengan TOP_LEVEL, hanya bidang tingkat atas yang tidak bersarang sambil menjaga bidang bersarang tetap utuh sebagai struct. Informasi tipe DynamoDB dihapus dan pengetikan dipertahankan. Mengkonversi ke tipe string ketika konflik skema terjadi.
Tabel Glue yang dihasilkan setelah replikasi:
| col_1 (string) | col_2 (struct) |
|---|---|
| nilai_1 |
|
Kueri akan disederhanakan untuk tingkat pertama:
SELECT col_1, col_2.col_3.id, col_2.col_4 FROM product_table;
Contoh LENGKAP
Dengan FULL unnesting, bidang tingkat atas dan bidang bersarang struct/map diratakan. Notasi titik digunakan untuk bidang bersarang (misalnya, “col_2.col_3.id”). Elemen array tetap tidak bersarang. Setiap simpul daun menjadi kolom tingkat atas.
Tabel Glue yang dihasilkan setelah replikasi:
| col_1 (string) | col_2.col_3.id (string) | col_2.col_4 (boolean) |
|---|---|---|
| nilai_1 | nilai_3 | BETUL |
Kueri akan sepenuhnya diratakan:
SELECT col_1, "col_2.col_3.id", "col_2.col_4" FROM product_table;