Aracılığıyla paylaş


.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ınsetNewIngestionTime.

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 MyOtherTabletaşıyın ve ile drop-by:MyTagetiketlenmiş 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 MyOtherTabletaşıyın ve içinde kimliğine göre belirli bir kapsamı MyOtherTablebı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_destuzantı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
}