Penyerapan dari kueri (.set, .append, .set-or-append, .set-or-replace)
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
Metode penyerapan ini ditujukan untuk eksplorasi dan prototipe. Jangan gunakan dalam skenario produksi atau volume tinggi.
Izin
Untuk melakukan tindakan yang berbeda pada tabel, diperlukan 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-replace
| | .set-or-append
) [async
] tableName [with
(
propertyName=
propertyValue [,
...]] <|
)
queryOrCommand
Pelajari selengkapnya tentang konvensi sintaksis.
Parameter
Nama | Jenis | Diperlukan | Deskripsi |
---|---|---|---|
async | string |
Jika ditentukan, perintah akan kembali dan melanjutkan penyerapan di latar belakang. Gunakan yang dikembalikan OperationId dengan .show operations perintah untuk mengambil status dan hasil penyelesaian penyerapan. |
|
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. |
Catatan
Hanya .show
perintah manajemen yang didukung.
Properti penyerapan yang didukung
Properti | Jenis | Deskripsi |
---|---|---|
creationTime |
string |
Nilai datetime, diformat sebagai string ISO8601, untuk digunakan pada saat pembuatan jangkauan 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 dapat 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 dapat 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 akan diaktifkan pada tabel. Default adalah true . |
tags |
string |
String JSON yang mewakili daftar tag untuk dikaitkan dengan jangkauan yang dibuat. |
docstring |
string |
Deskripsi yang digunakan untuk men dokumentasikan tabel. |
distributed |
bool |
Jika true , perintah menyerap dari semua simpul yang menjalankan kueri secara paralel. Defaultnya adalah false . Lihat tips performa. |
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 dariextend_schema
ataurecreate_schema
properti penyerapan diatur ketrue
..set-or-append
dan.append
perintah mempertahankan skema kecualiextend_schema
properti penyerapan diatur ketrue
.- 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, data lain akan diserap ke dalam kolom yang salah.
Perhatian
Jika skema dimodifikasi, itu terjadi dalam transaksi terpisah sebelum penyerapan data aktual. Ini berarti skema dapat dimodifikasi bahkan ketika ada kegagalan untuk menyerap data.
Tips performa
- Penyerapan data adalah operasi intensif sumber daya yang dapat memengaruhi aktivitas bersamaan pada kluster, termasuk menjalankan kueri. Hindari menjalankan terlalu banyak perintah penyerapan secara bersamaan.
- Batasi data untuk penyerapan menjadi kurang dari 1 GB per operasi penyerapan. Jika perlu, gunakan beberapa perintah penyerapan.
- Atur
distributed
bendera ketrue
jika jumlah data yang dihasilkan oleh kueri besar, melebihi 1 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.
Batasan karakter
Perintah akan 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
Contoh
Buat tabel baru bernama RecentErrors dalam database yang memiliki skema LogsTable yang sama dengan dan menyimpan semua rekaman kesalahan dari jam terakhir.
.set RecentErrors <|
LogsTable
| where Level == "Error" and Timestamp > now() - time(1h)
Buat tabel baru bernama "OldExtents" dalam database yang memiliki satu kolom, "ExtentId", dan menyimpan ID jangkauan dari semua jangkauan dalam database yang telah dibuat lebih dari 30 hari sebelumnya. Database sudah memiliki tabel bernama "MyExtents". Karena himpunan data diperkirakan lebih besar dari 1 GB (lebih dari ~ 1 juta baris) menggunakan bendera terdistribusi
.set async OldExtents with(distributed=true) <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Tambahkan data ke tabel bernama "OldExtents" yang sudah ada dalam database saat ini yang memiliki satu kolom, "ExtentId", dan menyimpan ID jangkauan dari semua jangkauan dalam database yang telah dibuat lebih dari 30 hari sebelumnya.
Tandai jangkauan baru dengan tag tagA
dan tagB
, berdasarkan tabel bernama "MyExtents" yang sudah ada.
.append OldExtents with(tags='["TagA","TagB"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Tambahkan data ke tabel "OldExtents" dalam database saat ini, atau buat tabel jika belum ada. Beri tag jangkauan baru dengan ingest-by:myTag
. Lakukan ini hanya jika tabel belum berisi jangkauan yang diberi tag ingest-by:myTag
, berdasarkan tabel bernama "MyExtents" yang sudah ada.
.set-or-append async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Ganti data dalam tabel "OldExtents" dalam database saat ini, atau buat tabel jika belum ada. Beri tag jangkauan baru dengan ingest-by:myTag
.
.set-or-replace async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Tambahkan data ke tabel "OldExtents" dalam database saat ini, sambil mengatur waktu pembuatan jangkauan yang dibuat ke datetime tertentu sebelumnya.
.append async OldExtents with(creationTime='2017-02-13T11:09:36.7992775Z') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Mengembalikan output
Menampilkan informasi tentang jangkauan yang dibuat karena perintah .set
atau .append
.
Contoh output
ExtentId | OriginalSize | ExtentSize | CompressedSize | IndexSize | RowCount |
---|---|---|---|---|---|
23a05ed6-376d-4119-b1fc-6493bcb05563 | 1291 | 5882 | 1568 | 4314 | 10 |
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