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 truekomutu tablonun şemasını genişletebilir. false varsayılan değerdir. Bu seçenek yalnızca , .set-or-appendve set-or-replace komutları için .appendgeç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 falsegösterilir. with (persistDetails=true)

Şema ile ilgili dikkat edilmesi gerekenler

  • .set-or-replaceveya recreate_schema alma özelliklerinden biri olarak ayarlanmadığı extend_schema sürece şemayı truekorur.
  • .set-or-appendve .append komutları, alma özelliği olarak trueayarlanmadığı 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 $tableoluş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 tagBetiketleriyle 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:myTagetiketlenmiş 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