Sorgudan alma (.set, .append, .set-or-append, .set-or-replace)

Şunlar için geçerlidir: ✅Microsoft FabricAzure Veri Gezgini

Bu komutlar bir sorgu veya yönetim komutu yürütür ve sorgunun sonuçlarını bir tabloya alır. Bu komutlar arasındaki fark, mevcut veya var olmayan tablo ve verilere nasıl davrandıklarıdır.

Command 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

Sorgu komutundan alma işlemini iptal etmek için bkz cancel operation. .

Not

Sorgudan alma işlemi doğrudan alma işlemidir. Bu nedenle, otomatik yeniden denemeleri içermez. Veri yönetimi hizmeti aracılığıyla alma sırasında otomatik yeniden denemeler kullanılabilir. Senaryonuz için en uygun alım seçeneğinin hangisi olduğuna karar vermek için alıma genel bakış belgesini kullanın.

İzinler

Tabloda farklı eylemler gerçekleştirmek için belirli izinler gereklidir:

  • komutunu kullanarak .append var olan bir tabloya 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öneticisi izinlerine sahip olmanız gerekir.

İzinler hakkında daha fazla bilgi için bkz . Kusto rol tabanlı erişim denetimi.

Sözdizimi

(.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 Zorunlu Açıklama
async string Belirtilirse, komut hemen geri döner ve arka planda alıma devam eder. Alma tamamlanma durumunu ve sonuçlarını almak için komutuyla döndürülen OperationId .show operations öğesini kullanın.
tableName string ✔️ Verileri 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. Yalnızca .show yönetim komutları desteklenir.

Performans ipuçları

  • distributed Sorgu tarafından üretilen veri miktarı büyükse, 1 GB'ı aşarsa ve serileştirme gerektirmezse özelliğini 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ü gerek duymadan çok sayıda küçük veri parçası oluşturabilir.
  • Veri alımı, sorgu çalıştırma da dahil olmak üzere veritabanındaki 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ı için verileri alma işlemi başına 1 GB'tan azla sınırlayın. Gerekirse, birden çok alma komutu kullanın.

Desteklenen alma özellikleri

Özellik Türü Açıklama
distributed bool ise true, komut sorguyu paralel olarak yürüten tüm düğümlerden alır. Varsayılan false değeridir. Bkz. performans ipuçları.
creationTime string Alınan veri kapsamlarının oluşturma zamanında kullanılacak ISO8601 dizesi olarak biçimlendirilmiş datetime değeri. Belirtilmemişse kullanılır now() . Belirtildiğinde, hedef tablonun etkin Kapsam birleştirme ilkesindeki özelliğin belirtilen değerle hizalandığından emin olunLookback.
extend_schema bool ise true, komut tablonun şemasını genişletebilir. Varsayılan false değeridir. Bu seçenek yalnızca , .set-or-appendve set-or-replace komutları için .appendgeçerlidir. Bu seçenek en az Tablo Yöneticisi izinleri gerektirir.
recreate_schema bool ise true, komut tablonun şemasını yeniden oluşturabilir. Varsayılan false değeridir. Bu seçenek yalnızca komut için .set-or-replace geçerlidir. Her ikisi de ayarlandıysa bu seçenek özelliğinden extend_schema önceliklidir. Bu seçenek en az Tablo Yöneticisi izinleri gerektirir.
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 veri alımı başarısız olur. Daha fazla bilgi için bkz . alma ölçütü: etiketler.
policy_ingestiontime bool ise true, alma 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 belgelemede kullanılan açıklama.
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 değeridir false. with (persistDetails=true)

Şemayla ilgili dikkat edilmesi gerekenler

  • .set-or-replaceveya recreate_schema alma özelliklerinden biri extend_schema olarak ayarlanmadığı sürece şemayı truekorur.
  • .set-or-appendve .append komutları, alma özelliği olarak ayarlanmadığı truesü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 yok. Sorgu sonucu şema sütunlarının tabloyla aynı sırada olduğundan emin olun; aksi takdirde veriler yanlış sütunlara alını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.

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şleç 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 adı geçen saatle aynı şemaya LogsTable sahip ve 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ütuna sahip olan ve veritabanında 30 günden fazla önce oluşturulan 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ırdan fazla) 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ütuna sahip olan ve veritabanında 30 günden daha önce oluşturulmuş tüm kapsamların kapsam kimliklerini tutan "OldExtents" adlı mevcut bir tabloya veri ekleyin. "MyExtents" adlı mevcut bir tabloyu temel alarak yeni kapsamı ve tagBetiketleriyle tagA işaretleyin.

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

Geçerli veritabanındaki "OldExtents" tablosuna veri 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, kapsam 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