Pemetaan penyerapan

Pemetaan penyerapan digunakan selama penyerapan untuk memetakan data masuk ke kolom di dalam tabel.

Data Explorer mendukung berbagai jenis pemetaan, baik berorientasi baris (CSV, JSON, AVRO dan W3CLOGFILE), dan berorientasi kolom (Parquet dan ORC).

Pemetaan penyerapan dapat dibuat sebelumnya dan dapat direferensikan dari perintah penyerapan menggunakan ingestionMappingReference parameter. Meskipun, penyerapan dimungkinkan tanpa menentukan pemetaan. Untuk informasi selengkapnya, lihat pemetaan identitas.

Setiap elemen dalam daftar pemetaan dibangun dari tiga bidang:

Properti Diperlukan Deskripsi
Kolom ✔️ Nama kolom target dalam tabel.
Tipe data Jenis data untuk membuat kolom yang dipetakan jika belum ada dalam tabel.
Properti Tas properti yang berisi properti khusus untuk setiap pemetaan seperti yang dijelaskan di setiap halaman jenis pemetaan tertentu.

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.

Jenis pemetaan yang didukung

Tabel berikut menentukan jenis pemetaan yang akan digunakan saat menyerap atau mengkueri data eksternal dengan format tertentu.

Format data Jenis Pemetaan
CSV Pemetaan CSV
TSV Pemetaan CSV
TSVe Pemetaan CSV
PSV Pemetaan CSV
SCSV Pemetaan CSV
SOHsv Pemetaan CSV
TXT Pemetaan CSV
RAW Pemetaan CSV
JSON Pemetaan JSON
AVRO Pemetaan AVRO
APACHEAVRO Pemetaan AVRO
Parquet Pemetaan Parquet
ORC Pemetaan ORC
W3CLOGFILE Pemetaan W3CLOGFILE

Pemetaan identitas

Penyerapan dimungkinkan tanpa menentukan properti ingestionMapping atau ingestionMappingReference. Data akan dipetakan menggunakan pemetaan data identitas yang berasal dari skema tabel. Skema tabel akan tetap sama. format properti harus ditentukan. Lihat format penyerapan.

Jenis format Format Pemetaan logika
Format data tabular dengan urutan kolom yang ditentukan, seperti format yang dipisahkan pembatas atau baris tunggal. CSV, TSV, TSVe, PSV, SCSV, Txt, SOHsv, Raw Semua kolom tabel dipetakan dalam urutan masing-masing ke kolom data agar muncul di sumber data. Jenis data kolom diambil dari skema tabel.
Format dengan kolom atau rekaman bernama dengan bidang bernama. JSON, Parquet, Avro, ApacheAvro, Orc, W3CLOGFILE Semua kolom tabel dipetakan ke kolom data atau bidang data yang memiliki nama yang sama (peka huruf besar/kecil). Jenis data kolom diambil dari skema tabel.

Peringatan

Setiap ketidakcocokan antara skema tabel dan struktur data, seperti jenis data kolom atau bidang, nama kolom atau bidang atau nomornya dapat mengakibatkan data yang kosong atau salah diserap.

Memindahkan transformasi

Beberapa pemetaan format data (Parquet, JSON, dan AVRO) mendukung transformasi waktu penyerapan yang sederhana dan berguna. Jika skenario memerlukan pemrosesan yang lebih kompleks pada waktu penyerapan, gunakan Kebijakan pembaruan, yang memungkinkan penentuan pemrosesan ringan menggunakan ekspresi KQL.

Transformasi bergantung jalur Deskripsi Kondisi
PropertyBagArrayToDictionary Mengubah array properti JSON, seperti {events:[{"n1":"v1"},{"n2":"v2"}]}, menjadi kamus dan menserialisasikannya ke dokumen JSON yang valid, seperti {"n1":"v1","n2":"v2"}. Tersedia untuk JSONjenis pemetaan , Parquet, AVRO dan ORC .
SourceLocation Nama artefak penyimpanan yang menyediakan data, ketik string (misalnya, bidang "BaseUri" blob). Tersedia untuk CSVjenis pemetaan , JSON, ParquetAVRO, , ORC dan W3CLOGFILE .
SourceLineNumber Offset relatif terhadap artefak penyimpanan tersebut, ketik long (dimulai dengan '1' dan bertahap per data baru). Tersedia dalam: JSON, Parquet, AVRO, ORC dan W3CLOGFILE jenis pemetaan.
DateTimeFromUnixSeconds Mengonversi angka yang mewakili unix-time (detik sejak string tanggalwaktu 1970-01-01) ke UTC. Tersedia untuk JSONjenis pemetaan , Parquet, AVRO dan ORC .
DateTimeFromUnixMilliseconds Mengonversi angka yang mewakili unix-time (milidetik sejak string tanggalwaktu 1970-01-01) ke UTC. Tersedia untuk JSONjenis pemetaan , Parquet, AVRO dan ORC .
DateTimeFromUnixMicroseconds Mengonversi angka yang mewakili unix-time (microseconds sejak 1970-01-01) ke string tanggalwaktu UTC. Tersedia untuk JSONjenis pemetaan , Parquet, AVRO dan ORC .
DateTimeFromUnixNanoseconds Mengonversi angka yang mewakili unix-time (nanodetik sejak 1970-01-01) ke string tanggalwaktu UTC. Tersedia untuk JSONjenis pemetaan , Parquet, AVRO dan ORC .
DropMappedFields Memetakan objek dalam dokumen JSON ke kolom dan menghapus bidang berlapis yang sudah direferensikan oleh pemetaan kolom lainnya. Tersedia untuk JSONjenis pemetaan , Parquet, AVRO dan ORC .
BytesAsBase64 Memperlakukan data sebagai array byte dan mengonversinya menjadi string yang dikodekan base64. Tersedia untuk AVRO jenis pemetaan. Untuk ApacheAvro format, jenis skema bidang data yang dipetakan harus atau bytesfixed jenis Avro. Untuk Avro format, bidang harus berupa array yang berisi nilai byte dari rentang [0-255]. null diserap jika data tidak mewakili array byte yang valid.

Contoh transformasi pemetaan

DropMappedFields Transformasi:

Mengingat konten JSON berikut:

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "EventName": "CustomEvent",
        "Revenue": 0.456
    }
}

Pemetaan data berikut memetakan seluruh Props objek ke dalam kolom Props dinamis sambil tidak termasuk kolom yang sudah dipetakan (Props.EventName sudah dipetakan ke dalam kolom EventName, sehingga dikecualikan).

[
    { "Column": "Time", "Properties": { "Path": "$.Time" } },
    { "Column": "EventName", "Properties": { "Path": "$.Props.EventName" } },
    { "Column": "Props", "Properties": { "Path": "$.Props", "Transform":"DropMappedFields" } },
]

Data yang diserap terlihat sebagai berikut:

Waktu EventName Prop
2012-01-15T10:45 CustomEvent {"Revenue": 0.456}

BytesAsBase64 Transformasi

Mengingat konten file AVRO berikut:

{
    "Time": "2012-01-15T10:45",
    "Props": {
        "id": [227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52]
    }
}

Pemetaan data berikut memetakan kolom id dua kali, dengan dan tanpa transformasi.

[
    { "Column": "Id", "Properties": { "Path": "$.props.id" } },
    { "Column": "Base64EncodedId", "Properties": { "Path": "$.props.id", "Transform":"BytesAsBase64" } },
]

Data yang diserap terlihat sebagai berikut:

Id Base64EncodedId
[227,131,34,92,28,91,65,72,134,138,9,133,51,45,104,52] 44MiXBxbQUiGigmFMy1oNA==