.replace extents komutu
Şunlar için geçerlidir: ✅Azure Veri Gezgini
Bu komut, belirli bir veritabanı bağlamında tek bir işlemde kapsamları bırakır ve taşır. Komut, belirtilen kapsamları hedef tablodan bırakır ve belirtilen kapsamları kaynak tablolardan hedef tabloya taşır.
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şleyememesinden 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 alım 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 ExtentId kaldırılacak kapsam kimliklerini içeren sütunu içermelidir. |
ExtentsToMoveQuery | string |
✔️ | Bu sorgunun sonuçları, hedef tabloya ExtentId taşınacak kaynak tabloları ve kapsam kimliklerini içeren ve TableName sütunlarını içermelidir. |
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 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şlendiğ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. MyOtherTable tablosunda bırakma kapsamı yoksa ilk örnek başarısız olur. Ancak ikinci örnek, 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
}