Pemetaan ORC

Gunakan pemetaan ORC untuk memetakan data masuk ke kolom di dalam tabel saat file sumber penyerapan Anda dalam format ORC.

Setiap elemen dalam daftar pemetaan menentukan pemetaan untuk kolom tertentu. Elemen-elemen ini dibangun dari tiga properti: column, , datatypedan properties. Pelajari selengkapnya dalam gambaran umum pemetaan data.

Setiap elemen pemetaan ORC harus berisi salah satu properti opsional berikut:

Properti Jenis Deskripsi
Bidang string Nama bidang dalam catatan ORC.
Jalur string Jika nilai dimulai dengan $ ditafsirkan sebagai jalur ke bidang dalam dokumen ORC yang akan menjadi konten kolom dalam tabel. Jalur yang menunjukkan seluruh catatan ORC 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, bukan beberapa nilai di dalam file ORC.
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 karena kolom terakhir pada data pertama kali diserap untuk kolom tersebut, mengingat jenis data yang valid ditentukan untuk kolom tersebut. Untuk menambahkan kolom baru ke pemetaan, gunakan perintah pemetaan penyerapan .alter.
  • Data di-batch menggunakan properti Penyerapan. Semakin banyak properti pemetaan penyerapan yang berbeda yang digunakan, seperti nilai ConstValue yang berbeda, semakin terfragmentasi penyerapannya, yang dapat menyebabkan penurunan performa.

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 = "orc",
      ingestionMapping =
      ```
      [
        {"Column": "column_a", "Properties": {"Path": "$.Field1"}},
        {"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="orc",
        ingestionMappingReference = "ORC_Mapping"
    )

Pemetaan identitas

Gunakan pemetaan ORC selama penyerapan tanpa menentukan skema pemetaan (lihat pemetaan identitas).

.ingest into Table123 (@"source1", @"source2")
    with
    (
        format="orc"
    )