Pemetaan Parquet
Gunakan pemetaan Parquet untuk memetakan data masuk ke kolom di dalam tabel saat file sumber penyerapan Anda dalam format Parquet.
Setiap elemen dalam daftar pemetaan menentukan pemetaan untuk kolom tertentu. Elemen-elemen ini dibangun dari tiga properti: column
, , datatype
dan properties
. Pelajari selengkapnya di gambaran umum pemetaan data.
Setiap elemen pemetaan Parquet harus berisi salah satu properti opsional berikut:
Properti | Jenis | Deskripsi |
---|---|---|
Bidang | string |
Nama bidang dalam rekaman Parquet. |
Jalur | string |
Jika nilai dimulai dengan $ ditafsirkan sebagai jalur ke bidang dalam dokumen Parquet yang akan menjadi konten kolom dalam tabel. Jalur yang menunjukkan seluruh catatan Parquet adalah $ . Jika nilai tidak dimulai dengan $ nilai ditafsirkan sebagai nilai konstanta. Jalur yang menyertakan karakter khusus harus diloloskan sebagai ['Nama Properti']. Untuk informasi selengkapnya, lihat sintaks JSONPath. |
ConstValue | string |
Nilai konstanta yang akan digunakan untuk kolom alih-alih beberapa nilai di dalam file Parquet. |
Transformasi | string |
Transformasi yang harus diterapkan pada konten dengan transformasi pemetaan. |
Catatan
Bidang dan Jalur saling eksklusif.
Alternatif berikut setara:
[
{"Column": "event_name", "Properties": {"Path": "$.EventName"}}
]
[
{"Column": "event_name", "Properties": {"Field": "EventName"}}
]
Penting
Untuk penyerapan antrean:
- Jika tabel yang direferensikan dalam pemetaan tidak ada dalam database, tabel akan dibuat secara otomatis, mengingat bahwa jenis data yang valid ditentukan untuk semua kolom.
- Jika kolom yang direferensikan dalam pemetaan tidak ada dalam tabel, kolom akan ditambahkan secara otomatis ke tabel sebagai kolom terakhir pada data pertama kali diserap untuk kolom tersebut, mengingat jenis data yang valid ditentukan untuk kolom. Untuk menambahkan kolom baru ke pemetaan, gunakan perintah pemetaan penyerapan .alter.
- Data di-batch menggunakan properti Penyerapan. Semakin berbeda properti pemetaan penyerapan yang digunakan, seperti nilai ConstValue yang berbeda, semakin terfragmentasi penyerapannya, yang dapat menyebabkan penurunan performa.
Konversi jenis Parquet
Dukungan komprehensif disediakan untuk mengonversi jenis data saat Anda menyerap atau mengkueri data dari sumber Parquet.
Tabel berikut ini menyediakan pemetaan jenis bidang Parquet, dan jenis kolom tabel yang dapat dikonversi. Kolom pertama mencantumkan jenis Parquet, dan kolom lainnya memperlihatkan jenis kolom tabel tempat kolom tersebut dapat dikonversi.
Catatan
Untuk jenis DESIMAL Parquest, jenis fisik ditentukan dalam tanda kurung, sebagai berikut:
- I32: INT32 (bilangan bulat 32-bit)
- I64: INT64 (bilangan bulat 64-bit)
- FLBA: Array Byte Panjang Tetap
- BA: Byte Array
Jenis Parquet | bool | int | panjang | nyata | decimal | tanggalwaktu | rentangwaktu | string | guid | dinamis |
---|---|---|---|---|---|---|---|---|---|---|
INT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
INT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT8 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT16 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
UINT64 | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT32 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
FLOAT64 | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
BOOLEAN | ✔️ | ❌ | ❌ | ❌ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DESIMAL (I32) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DESIMAL (I64) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DESIMAL (FLBA) | ❌ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ❌ |
DESIMAL (BA) | ✔️ | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
TIMESTAMP | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
TANGGAL | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ | ❌ | ❌ |
STRING | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
UUID | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ✔️ | ❌ |
JSON | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ | ❌ | ✔️ |
LIST | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
MAP | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
STRUCT | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ✔️ |
Contoh
[
{"Column": "event_timestamp", "Properties": {"Path": "$.Timestamp"}},
{"Column": "event_name", "Properties": {"Path": "$.Event.Name"}},
{"Column": "event_type", "Properties": {"Path": "$.Event.Type"}},
{"Column": "event_time", "Properties": {"Path": "$.Timestamp", "Transform": "DateTimeFromUnixMilliseconds"}},
{"Column": "ingestion_time", "Properties": {"ConstValue": "2021-01-01T10:32:00"}},
{"Column": "full_record", "Properties": {"Path": "$"}}
]
Pemetaan di atas diserialisasikan sebagai string JSON ketika disediakan sebagai bagian .ingest
dari perintah manajemen.
.ingest into Table123 (@"source1", @"source2")
with
(
format = "parquet",
ingestionMapping =
```
[
{"Column": "column_a", "Properties": {"Path": "$.Field1.Subfield"}},
{"Column": "column_b", "Properties": {"Path": "$.[\'Field name with space\']"}},
]
```
)
Pemetaan yang telah dibuat sebelumnya
Saat pemetaan telah dibuat sebelumnya, referensikan pemetaan berdasarkan nama dalam .ingest
perintah manajemen.
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet",
ingestionMappingReference = "Mapping_Name"
)
Pemetaan identitas
Gunakan pemetaan Parquet selama penyerapan tanpa menentukan skema pemetaan (lihat pemetaan identitas).
.ingest into Table123 (@"source1", @"source2")
with
(
format="parquet"
)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk