Sorgudan alma (.set, .append, .set-or-append, .set-or-replace)
Şunlar için geçerlidir: ✅Microsoft Fabric✅Azure 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ğinitrue
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-append ve set-or-replace komutları için .append geç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-replace
veyarecreate_schema
alma özelliklerinden biriextend_schema
olarak ayarlanmadığı sürece şemayıtrue
korur..set-or-append
ve.append
komutları, alma özelliği olarak ayarlanmadığıtrue
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 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 $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 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 tagB
etiketleriyle 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: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, 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 |