Sorgudan alma (.set, .append, .set-or-append, .set-or-replace)
Bu komutlar bir sorguyu veya yönetim komutunu yürütür ve sorgunun sonuçlarını bir tabloya alır. Bu komutlar arasındaki fark, var olan veya olmayan tablolara ve verilere nasıl davrandıklarıdır.
Komut | Tablo varsa | Tablo yoksa |
---|---|---|
.set |
Komut başarısız oluyor | Tablo oluşturulur ve veriler alınmıştır |
.append |
Veriler tabloya eklenir | Komut başarısız oluyor |
.set-or-append |
Veriler tabloya eklenir | Tablo oluşturulur ve veriler alınmıştır |
.set-or-replace |
Veriler tablodaki verilerin yerini alır | Tablo oluşturulur ve veriler alınmıştır |
Sorgudan alma işlemini iptal etmek için bkz cancel operation
. .
Not
Bu alma yöntemi keşif ve prototip oluşturma için tasarlanmıştır. Üretim veya yüksek hacimli senaryolarda kullanmayın.
İzinler
Tabloda farklı eylemler gerçekleştirmek için belirli izinler gereklidir:
- komutunu kullanarak var olan bir tabloya
.append
satır eklemek için en az Tablo Alma iznine sahip olmanız gerekir. - Çeşitli
.set
komutları kullanarak yeni bir tablo oluşturmak için en az Veritabanı Kullanıcısı izinlerine sahip olmanız gerekir. - komutunu kullanarak
.set-or-replace
var olan bir tablodaki satırları değiştirmek için en az Tablo Yönetici izinlerine sahip olmanız gerekir.
İzinler hakkında daha fazla bilgi için bkz. Kusto rol tabanlı erişim denetimi.
Syntax
(.set
| .set-or-append
.set-or-replace
.append
| | ) [async
] tableName [with
(
propertyName=
propertyValue [,
...]] <|
)
queryOrCommand
Söz dizimi kuralları hakkında daha fazla bilgi edinin.
Parametreler
Ad | Tür | Gerekli | Açıklama |
---|---|---|---|
Zaman uyumsuz | string |
Belirtilirse, komut döndürülecek ve arka planda alıma devam edecektir. Alım tamamlanma durumunu ve sonuçlarını almak için komutuyla döndürülen OperationId .show operations öğesini kullanın. |
|
Tablename | string |
✔️ | Veri alınacak tablonun adı. tableName her zaman bağlamdaki veritabanıyla ilişkilidir. |
propertyName, propertyValue | string |
Alma işlemini denetlemek için kullanılan bir veya daha fazla desteklenen alım özelliği . | |
queryOrCommand | string |
✔️ | Sonuçları veri olarak kullanılan sorgunun veya yönetim komutunun metni. |
Not
Yalnızca .show
yönetim komutları desteklenir.
Desteklenen alım özellikleri
Özellik | Tür | Description |
---|---|---|
creationTime |
string |
Alınan veri kapsamlarının oluşturma zamanında kullanılacak ISO8601 dizesi olarak biçimlendirilmiş tarih saat değeri. Belirtilmemişse now() kullanılır. Belirtildiğinde, hedef tablonun etkin Kapsam birleştirme ilkesindeki özelliğin belirtilen değerle hizalandığından emin olunLookback . |
extend_schema |
bool |
ise true komutu tablonun şemasını genişletebilir. false varsayılan değerdir. Bu seçenek yalnızca , .set-or-append ve set-or-replace komutları için .append geçerlidir. Bu seçenek için en az Tablo Yönetici izinleri gerekir. |
recreate_schema |
bool |
ise true , komut tablonun şemasını yeniden oluşturabilir. false varsayılan değerdir. Bu seçenek yalnızca komutu için .set-or-replace geçerlidir. Her ikisi de ayarlandıysa bu seçenek özelliğinden extend_schema önceliklidir. Bu seçenek için en az Tablo Yönetici izinleri gerekir. |
folder |
string |
Tabloya atanacak klasör. Tablo zaten varsa, bu özellik tablonun klasörünün üzerine yazar. |
ingestIfNotExists |
string |
Belirtilirse, tabloda aynı değere sahip bir ingest-by: etiketle etiketlenmiş veriler varsa alım başarısız olur. Daha fazla bilgi için bkz. alma ölçütü: etiketler. |
policy_ingestiontime |
bool |
ise true , veri alımı zaman ilkesi tabloda etkinleştirilir. Varsayılan değer: true . |
tags |
string |
Oluşturulan kapsamla ilişkilendirilecek etiketlerin listesini temsil eden bir JSON dizesi. |
docstring |
string |
Tabloyu belgeleyemek için kullanılan açıklama. |
distributed |
bool |
ise true , komut sorguyu paralel olarak yürüten tüm düğümlerden alır. false varsayılan değerdir. Bkz. performans ipuçları. |
persistDetails |
Belirtilirse komutun .show operation details komutu tarafından alınması için ayrıntılı sonuçları kalıcı hale getirmesi gerektiğini belirten boole değeri. Varsayılan olarak olarak false gösterilir. |
with (persistDetails=true) |
Şema ile ilgili dikkat edilmesi gerekenler
.set-or-replace
veyarecreate_schema
alma özelliklerinden biri olarak ayarlanmadığıextend_schema
sürece şemayıtrue
korur..set-or-append
ve.append
komutları, alma özelliği olaraktrue
ayarlanmadığı sürece şemayıextend_schema
korur.- Sonuç kümesi şemasını hedef tablonun şemasıyla eşleştirmek sütun türlerini temel alır. Sütun adlarının eşleşmesi yoktur. Sorgu sonucu şema sütunlarının tabloyla aynı sırada olduğundan emin olun; aksi takdirde veriler yanlış sütunlara alınacaktır.
Dikkat
Şema değiştirilirse, gerçek veri alımından önce ayrı bir işlemde gerçekleşir. Bu, verilerin alınamaması durumunda bile şemanın değiştirilebileceği anlamına gelir.
Performans ipuçları
- Veri alımı, sorgu çalıştırma da dahil olmak üzere kümedeki eşzamanlı etkinlikleri etkileyebilecek yoğun kaynak kullanan bir işlemdir. Aynı anda çok fazla alma komutu çalıştırmaktan kaçının.
- Veri alımını her alma işlemi için 1 GB'tan az olacak şekilde sınırlayın. Gerekirse, birden çok alma komutu kullanın.
distributed
Sorgu tarafından üretilen veri miktarı büyükse, 1 GB'ı aşarsa ve serileştirme gerektirmezse bayrağınıtrue
olarak ayarlayın. Ardından, birden çok düğüm paralel olarak çıkış üretebilir. Sorgu sonuçları küçük olduğunda bu bayrağı kullanmayın çünkü çok fazla küçük veri parçası oluşturması gerekmez.
Karakter sınırlaması
Sorgu karakteriyle $
bir varlık adı oluşturursa komut başarısız olur. Varlık adları adlandırma kurallarına uymalıdır, bu nedenle alma komutunun $
başarılı olması için karakterin kaldırılması gerekir.
Örneğin, aşağıdaki sorguda search
işleci bir sütun $table
oluşturur. Sorgu sonuçlarını depolamak için project-rename komutunu kullanarak sütunu yeniden adlandırın.
.set Texas <| search State has 'Texas' | project-rename tableName=$table
Örnekler
Veritabanında, ile aynı şemaya LogsTable sahip ve son saatin tüm hata kayıtlarını tutan adlı RecentErrors yeni bir tablo oluşturun.
.set RecentErrors <|
LogsTable
| where Level == "Error" and Timestamp > now() - time(1h)
Veritabanında "ExtentId" adlı tek bir sütunu olan ve veritabanında 30 günden daha önce oluşturulmuş tüm kapsamların kapsam kimliklerini tutan "OldExtents" adlı yeni bir tablo oluşturun. Veritabanında "MyExtents" adlı bir tablo var. Veri kümesinin 1 GB'tan büyük olması beklendiğinden (yaklaşık 1 milyon satır) dağıtılmış bayrağını kullanın
.set async OldExtents with(distributed=true) <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Geçerli veritabanında "ExtentId" adlı tek bir sütunu olan ve veritabanında 30 günden daha önce oluşturulmuş tüm uzantıların kapsam kimliklerini tutan "OldExtents" adlı mevcut bir tabloya veri ekleyin.
Yeni kapsamı , "MyExtents" adlı mevcut bir tabloya göre ve tagB
etiketleriyle tagA
işaretleyin.
.append OldExtents with(tags='["TagA","TagB"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Verileri geçerli veritabanındaki "OldExtents" tablosuna ekleyin veya henüz yoksa tabloyu oluşturun. Yeni kapsamı ile etiketleyin ingest-by:myTag
. Bunu yalnızca tabloda "MyExtents" adlı mevcut bir tablo temelinde ile ingest-by:myTag
etiketlenmiş bir uzantı yoksa yapabilirsiniz.
.set-or-append async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Geçerli veritabanındaki "OldExtents" tablosundaki verileri değiştirin veya henüz yoksa tabloyu oluşturun. Yeni kapsamı ile etiketleyin ingest-by:myTag
.
.set-or-replace async OldExtents with(tags='["ingest-by:myTag"]', ingestIfNotExists='["myTag"]') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Verileri geçerli veritabanındaki "OldExtents" tablosuna eklerken, oluşturulan kapsamları oluşturma zamanını geçmişteki belirli bir tarih saatine ayarlayın.
.append async OldExtents with(creationTime='2017-02-13T11:09:36.7992775Z') <|
MyExtents
| where CreatedOn < now() - time(30d)
| project ExtentId
Çıkış döndür
veya .append
komutu nedeniyle .set
oluşturulan kapsamlarla ilgili bilgileri döndürür.
Örnek çıkış
ExtentId | ÖzgünLeştir | ExtentSize | CompressedSize | IndexSize | Rowcount |
---|---|---|---|---|---|
23a05ed6-376d-4119-b1fc-6493bcb05563 | 1291 | 5882 | 1568 | 4314 | 10 |
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin