.replace extents komutu
Bu komut belirli bir veritabanı bağlamında çalışır. Belirtilen kapsamları kaynak tablolarından hedef tabloya taşır ve hedef tablodan belirtilen kapsamları bırakır. Tüm bırakma ve taşıma işlemleri tek bir işlemde gerçekleştirilir.
Not
Veri parçaları uzantı olarak adlandırılır ve tüm komutlar eş anlamlı olarak "extent" veya "extents" kullanır. Kapsamlar hakkında daha fazla bilgi için bkz . Kapsamlara (veri parçalarına) genel bakış.
İzinler
Kaynak ve hedef tablolar için en az Tablo Yöneticisi izinlerine sahip olmanız gerekir.
Kısıtlamalar
- Hem kaynak hem de hedef tabloların bağlam veritabanında olması gerekir.
- ExtentsToDropQuery tarafından belirtilen tüm uzantıların hedef tabloya ait olması beklenir.
- Kaynak tablolardaki tüm sütunların hedef tabloda aynı ada ve veri türüne sahip olması beklenir.
- Hedef tablo gerçekleştirilmiş bir görünümün kaynak tablosuysa, gerçekleştirilmiş görünüm taşınan kapsamlardaki kayıtları işlemediğinden komut başarısız olabilir. Gerçekleştirilmiş görünüm sınırlamaları sayfasında daha fazla ayrıntıya bakın. Taşıma komutu sırasında yeni bir alma süresi ayarlayarak bu hataya geçici bir çözüm bulabilirsiniz. Desteklenen özellikler bölümüne bakın
setNewIngestionTime
.
Sözdizimi
.replace
[async
] extents
table
in
DestinationTableName [ with
(
PropertyName =
PropertyValue [,
...]] <|
{
)
ExtentsToDropQuery},{
ExtentsToMoveQuery}
Söz dizimi kuralları hakkında daha fazla bilgi edinin.
Parametreler
Ad | Tür | Zorunlu | Açıklama |
---|---|---|---|
async |
string |
Belirtilirse, komut zaman uyumsuz olarak çalışır. | |
DestinationTableName | string |
✔️ | Kapsamların taşındığı tablonun adı. |
BaşlangıçTarihi | datetime |
Sorgu penceresi başlangıç tarihi. | |
ToDate | datetime |
Sorgu penceresi bitiş tarihi. | |
PropertyName, PropertyValue | string |
Bir veya daha fazla Desteklenen özellik. | |
ExtentsToDropQuery | string |
✔️ | Bu sorgunun sonuçları hedef tablodan bırakılması gereken kapsam kimliklerini belirtir. "ExtentId" adlı bir sütuna sahip bir kayıt kümesi döndürmelidir. |
ExtentsToMoveQuery | string |
✔️ | Bu Kusto Sorgu Dili (KQL) sorgusunun sonuçları, hedef tabloya taşınacak kaynak tabloları ve kapsam kimliklerini belirtir. "ExtentId" ve "TableName" adlı sütunları olan bir kayıt kümesi döndürmelidir. |
Desteklenen özellikler
Özellik adı | Type | Zorunlu | Açıklama |
---|---|---|---|
setNewIngestionTime |
bool |
olarak ayarlanırsa true , taşınmakta olan kapsamlarda tüm kayıtlara yeni bir alma zamanı atanır. Bu, kayıtların gerçekleştirilmiş görünümler ve sürekli veri dışarı aktarma gibi veritabanı imleçlerine bağlı iş yükleri tarafından işlenmesi gerektiğinde kullanışlıdır. |
|
extentCreatedOnFrom |
datetime |
✔️ | Bu noktadan sonra oluşturulan kapsamlara uygulayın. |
extentCreatedOnTo |
datetime |
✔️ | Bu noktadan önce oluşturulan kapsamlara uygulayın. |
Not
Daha iyi performans için extentCreatedOnFrom ve extentCreatedOnTo parametrelerini mümkün olan en küçük aralığa ayarlayın.
Döndürülenler
Komut zaman uyumlu olarak çalıştırıldığında, aşağıdaki şemaya sahip bir tablo döndürülür.
Çıkış parametresi | Type | Açıklama |
---|---|---|
OriginalExtentId | string |
Hedef tabloya taşınan kaynak tablodaki özgün kapsam veya bırakılan hedef tablodaki kapsam için benzersiz tanımlayıcı (GUID). |
ResultExtentId | string |
Kaynak tablodan hedef tabloya taşınan sonuç kapsamı için benzersiz tanımlayıcı (GUID). Kapsam hedef tablodan bırakıldıysa boş. Hata durumunda: "Başarısız". |
Ayrıntılar | string |
İşlem başarısız olursa hata ayrıntılarını içerir. |
Komut zaman uyumsuz olarak çalıştırıldığında, bir işlem kimliği (GUID) döndürülür. .show operations komutuyla işlemin durumunu izleyin ve .show operation details komutuyla başarılı bir yürütmenin sonuçlarını alın.
Not
ExtentsToDropQuery sorgusu tarafından döndürülen uzantılar hedef tabloda yoksa komut başarısız olur. Kapsamlar değiştir komutu yürütülmeden önce birleştirildiyse bu durum oluşabilir. Komutun eksik kapsamlarda başarısız olduğundan emin olmak için sorgunun beklenen ExtentId değerlerini döndürdüğünden emin olun. Aşağıdaki örnek #1, MyOtherTable tablosunda bırakma kapsamı yoksa başarısız olur. Ancak örnek #2, bırakma kapsamı mevcut olmasa bile başarılı olur çünkü bırakma sorgusu herhangi bir kapsam kimlikleri döndürmedi.
Örnekler
Belirtilen oluşturma zaman aralığındaki tüm kapsamları iki tablodan taşıma
Belirtilen oluşturma zaman aralığındaki iki belirli tablodan (MyTable1
, MyTable2
) tüm kapsamları tabloya MyOtherTable
taşıyın ve ile drop-by:MyTag
etiketlenmiş olarak MyOtherTable
tüm kapsamları bırakın:
.replace extents in table MyOtherTable with (extentCreatedOnFrom=datetime(2023-03-10), extentCreatedOnTo=datetime(2023-03-12)) <|
{
.show table MyOtherTable extents where tags has 'drop-by:MyTag'
},
{
.show tables (MyTable1,MyTable2) extents
}
Örnek çıktı
OriginalExtentId | ResultExtentId | Ayrıntılar |
---|---|---|
e133f050-a1e2-4dad-8552-1f5cf47cab69 | 0d96ab2d-9dd2-4d2c-a45e-b24c65aa6687 | |
cdbeb35b-87ea-499f-b545-defbae091b57 | a90a303c-8a14-4207-8f35-d8ea94ca45be | |
4fcb4598-9a31-4614-903c-0c67c286da8c | 97aafea1-59ff-4312-b06b-08f42187872f | |
2dfdef64-62a3-4950-a130-96b5b1083b5a | 0fb7f3da-5e28-4f09-a000-e62eb41592df |
Belirtilen oluşturma zaman aralığındaki tüm kapsamları bir tablodan diğerine taşıma, belirli bir kapsamı bırakma
Belirli bir oluşturma zaman aralığındaki tüm kapsamları belirli bir tablodan (MyTable1
) tabloya MyOtherTable
taşıyın ve içinde kimliğine göre belirli bir kapsamı MyOtherTable
bırakın:
.replace extents in table MyOtherTable with (extentCreatedOnFrom=datetime(2023-03-10), extentCreatedOnTo=datetime(2023-03-12)) <|
{
print ExtentId = "2cca5844-8f0d-454e-bdad-299e978be5df"
},
{
.show table MyTable1 extents
}
.replace extents in table MyOtherTable with (extentCreatedOnFrom=datetime(2023-03-10), extentCreatedOnTo=datetime(2023-03-12)) <|
{
.show table MyOtherTable extents
| where ExtentId == guid(2cca5844-8f0d-454e-bdad-299e978be5df)
},
{
.show table MyTable1 extents
}
Bir eş etkili mantık uygulama
Kusto'nın yalnızca tablodan tabloya taşınacak t_source
t_dest
uzantılar varsa uzantılar t_dest
bırakması için bir aynı anda etkili bir mantık uygulayın:
.replace async extents in table t_dest with (extentCreatedOnFrom=datetime(2023-03-10), extentCreatedOnTo=datetime(2023-03-12)) <|
{
let any_extents_to_move = toscalar(
t_source
| where extent_tags() has 'drop-by:blue'
| summarize count() > 0
);
let extents_to_drop =
t_dest
| where any_extents_to_move and extent_tags() has 'drop-by:blue'
| summarize by ExtentId = extent_id()
;
extents_to_drop
},
{
let extents_to_move =
t_source
| where extent_tags() has 'drop-by:blue'
| summarize by ExtentId = extent_id(), TableName = 't_source'
;
extents_to_move
}
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