Penyerapan dari kueri (.set, .append, .set-or-append, .set-or-replace)

Beralih layanan menggunakan daftar drop-down Versi . Pelajari selengkapnya tentang navigasi.
Berlaku untuk: ✅ Microsoft Fabric ✅ Azure Data Explorer

Perintah ini menjalankan kueri atau perintah manajemen dan menyerap hasil kueri ke dalam tabel. Perbedaan antara perintah ini adalah bagaimana mereka memperlakukan tabel dan data yang ada atau tidak ada.

Perintah Jika tabel ada Jika tabel tidak ada
.set Perintah gagal. Tabel dibuat dan data diserap.
.append Data ditambahkan ke tabel. Perintah gagal.
.set-or-append Data ditambahkan ke tabel. Tabel dibuat dan data diserap.
.set-or-replace Data menggantikan data dalam tabel. Tabel dibuat dan data diserap.

Untuk membatalkan penyerapan dari perintah kueri, lihat cancel operation.

Catatan

Menyerap dari kueri adalah penyerapan langsung. Dengan demikian, ini tidak termasuk percobaan ulang otomatis. Percobaan ulang otomatis tersedia saat menyerap melalui layanan manajemen data. Gunakan dokumen gambaran umum penyerapan untuk memutuskan opsi penyerapan mana yang paling cocok untuk skenario Anda.

Catatan

Menyerap dari kueri adalah penyerapan langsung. Dengan demikian, ini tidak termasuk percobaan ulang otomatis. Percobaan ulang otomatis tersedia saat menyerap melalui layanan manajemen data.

Izin

Untuk melakukan tindakan yang berbeda pada tabel, Anda memerlukan izin tertentu:

  • Untuk menambahkan baris ke tabel yang sudah ada menggunakan .append perintah , Anda memerlukan minimal izin Table Ingestor.
  • Untuk membuat tabel baru menggunakan berbagai .set perintah, Anda memerlukan minimal izin Pengguna Database.
  • Untuk mengganti baris dalam tabel yang sudah ada menggunakan .set-or-replace perintah , Anda memerlukan minimal izin Admin Tabel.

Untuk informasi selengkapnya tentang izin, lihat Kontrol akses berbasis peran Kusto.

Sintaks

(.set | .append | .set-or-append | .set-or-replace) [async] tableName [with( propertyName= propertyValue [, ...]] )<|queryOrCommand

Pelajari selengkapnya tentang konvensi sintaksis.

Parameter

Nama Tipe Wajib Deskripsi
async string Jika ditentukan, perintah akan segera kembali dan melanjutkan penyerapan di latar belakang. Gunakan yang dikembalikan OperationId dengan .show operations perintah untuk mengambil status penyelesaian penyerapan dan hasil.
tableName string ✔️ Nama tabel untuk menyerap data. tableName selalu terkait dengan database dalam konteks.
propertyName, propertyValue string Satu atau beberapa properti penyerapan yang didukung digunakan untuk mengontrol proses penyerapan.
queryOrCommand string ✔️ Teks kueri atau perintah manajemen yang hasilnya digunakan sebagai data untuk diserap. Hanya .show perintah manajemen yang didukung.

Tips performa

  • Atur distributed properti ke true jika jumlah data yang dihasilkan oleh kueri besar, melebihi satu gigabyte (GB), dan tidak memerlukan serialisasi. Kemudian, beberapa simpul dapat menghasilkan output secara paralel. Jangan gunakan bendera ini saat hasil kueri kecil, karena mungkin tidak perlu menghasilkan banyak pecahan data kecil.
  • Penyerapan data adalah operasi intensif sumber daya yang mungkin memengaruhi aktivitas bersamaan pada database, termasuk menjalankan kueri. Hindari menjalankan terlalu banyak perintah penyerapan secara bersamaan.
  • Batasi data untuk penyerapan hingga kurang dari satu GB per operasi penyerapan. Jika perlu, gunakan beberapa perintah penyerapan.

Properti penyerapan yang didukung

Properti Tipe Deskripsi
distributed bool Jika true, perintah menyerap dari semua simpul yang menjalankan kueri secara paralel. Defaultnya adalah false. Lihat tips performa.
creationTime string Nilai datetime , diformat sebagai ISO8601 string, untuk digunakan pada waktu pembuatan tingkat data yang diserap. Jika tidak ditentukan, now() digunakan. Ketika ditentukan, pastikan properti Lookback dalam Kebijakan penggabungan jangkauan efektif milik tabel target selaras dengan nilai yang ditentukan.
extend_schema bool Jika true, perintah mungkin memperluas skema tabel. Defaultnya adalah false. Opsi hanya berlaku untuk perintah .append, .set-or-append, dan set-or-replace. Opsi ini memerlukan setidaknya izin Admin Tabel.
recreate_schema bool Jika true, perintah mungkin membuat ulang skema tabel. Defaultnya adalah false. Opsi ini hanya berlaku untuk .set-or-replace perintah . Opsi ini lebih diutamakan daripada extend_schema properti jika keduanya diatur. Opsi ini memerlukan setidaknya izin Admin Tabel.
folder string Folder yang akan ditetapkan ke tabel. Jika tabel sudah ada, properti ini akan menimpa folder tabel.
ingestIfNotExists string Jika ditentukan, penyerapan gagal jika tabel sudah memiliki data yang ingest-by: ditandai dengan tag dengan nilai yang sama. Untuk informasi selengkapnya, lihat ingest-by: tag.
policy_ingestiontime bool Jika true, Kebijakan Waktu Penyerapan diaktifkan pada tabel. Default adalah true.
tags string JSON string yang mewakili daftar tag untuk dikaitkan dengan tingkat yang dibuat.
docstring string Deskripsi yang digunakan untuk mendokumen tabel.
persistDetails Nilai Boolean yang, jika ditentukan, menunjukkan bahwa perintah harus mempertahankan hasil terperinci untuk pengambilan oleh perintah detail operasi .show. Default ke false. with (persistDetails=true)

Pertimbangan skema

  • .set-or-replace mempertahankan skema kecuali salah satu dari extend_schema atau recreate_schema properti penyerapan diatur ke true.
  • .set-or-append dan .append perintah mempertahankan skema kecuali extend_schema properti penyerapan diatur ke true.
  • Mencocokkan skema tataan hasil dengan tabel target didasarkan pada jenis kolom. Tidak ada pencocokan nama kolom. Pastikan bahwa kolom skema hasil kueri berada dalam urutan yang sama dengan tabel, jika tidak, data diserap ke dalam kolom yang salah.

Perhatian

Jika skema dimodifikasi, itu terjadi dalam transaksi terpisah sebelum penyerapan data aktual. Ini berarti skema mungkin dimodifikasi bahkan ketika ada kegagalan untuk menyerap data.

Batasan karakter

Perintah gagal jika kueri menghasilkan nama entitas dengan $ karakter . Nama entitas harus mematuhi aturan penamaan, sehingga $ karakter harus dihapus agar perintah penyerapan berhasil.

Misalnya, dalam kueri berikut, search operator menghasilkan kolom $table. Untuk menyimpan hasil kueri, gunakan project-rename untuk mengganti nama kolom.

.set Texas <| search State has 'Texas' | project-rename tableName=$table

Pengembalian Barang

Menampilkan informasi tentang jangkauan yang dibuat karena perintah .set atau .append.

Contoh

Membuat dan memperbarui tabel dari sumber kueri

Kueri berikut membuat RecentErrors tabel dengan skema LogsTableyang sama dengan . Ini diperbarui RecentErrors dengan semua log kesalahan dari LogsTable selama satu jam terakhir.

.set RecentErrors <|
   LogsTable
   | where Level == "Error" and Timestamp > now() - time(1h)

Membuat dan memperbarui tabel dari sumber kueri menggunakan bendera terdistribusi

Contoh berikut membuat tabel baru yang disebut OldExtents dalam database, secara asinkron. Himpunan data diperkirakan lebih besar dari satu GB (lebih dari ~satu juta baris) sehingga bendera terdistribusi digunakan. Ini diperbarui OldExtents dengan ExtentId entri dari MyExtents tabel yang dibuat lebih dari 30 hari yang lalu.

.set async OldExtents with(distributed=true) <|
   MyExtents 
   | where CreatedOn < now() - time(30d)
   | project ExtentId

Menambahkan data ke tabel

Contoh berikut memfilter ExtentId entri dalam MyExtents tabel yang dibuat lebih dari 30 hari yang lalu dan menambahkan entri ke OldExtents tabel dengan tag terkait.

.append OldExtents with(tags='["TagA","TagB"]') <| 
   MyExtents 
   | where CreatedOn < now() - time(30d) 
   | project ExtentId

Membuat atau menambahkan tabel dengan data bertag yang mungkin sudah ada

Contoh berikut menambahkan atau membuat OldExtents tabel secara asinkron. Ini memfilter ExtentId entri dalam MyExtents tabel yang dibuat lebih dari 30 hari yang lalu dan menentukan tag untuk ditambahkan ke tingkat baru dengan ingest-by:myTag. Parameter ingestIfNotExists memastikan bahwa penyerapan hanya terjadi jika data belum ada dalam tabel dengan tag yang ditentukan.

.set-or-append async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
   MyExtents
   | where CreatedOn < now() - time(30d)
   | project ExtentId

Membuat tabel atau mengganti data dengan data terkait

Kueri berikut menggantikan data dalam OldExtents tabel, atau membuat tabel jika belum ada, dengan ExtentId entri dalam MyExtents tabel yang dibuat lebih dari 30 hari yang lalu. Beri tag tingkat baru dengan ingest-by:myTag jika data belum ada dalam tabel dengan tag yang ditentukan.

.set-or-replace async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <| 
   MyExtents 
   | where CreatedOn < now() - time(30d) 
   | project ExtentId

Menambahkan data dengan data terkait

Contoh berikut menambahkan data ke OldExtents tabel secara asinkron, menggunakan ExtentId entri dari MyExtents tabel yang dibuat lebih dari 30 hari yang lalu. Ini mengatur waktu pembuatan tertentu untuk tingkat baru.

.append async OldExtents with(creationTime='2017-02-13T11:09:36.7992775Z') <| 
   MyExtents 
   | where CreatedOn < now() - time(30d) 
   | project ExtentId     

Output contoh

Berikut ini adalah sampel jenis output yang mungkin Anda lihat dari kueri Anda.

ExtentId OriginalSize ExtentSize CompressedSize IndexSize RowCount
23a05ed6-376d-4119-b1fc-6493bcb05563 1291 5882 1568 4314 10