Aracılığıyla paylaş


.update table komutu

komutu, .update table kayıtları atomik olarak silip ekleyerek belirtilen tabloda veri güncelleştirmeleri gerçekleştirir.

Uyarı

Bu komut kurtarılamaz.

Not

Komutunu bir güncelleştirme ilkesinin .update tablekaynağı olan bir tabloda çalıştırdığınızda.update table, komut, değiştirilmekte olan tablonun güncelleştirme ilkesi kaynağı olduğu bu güncelleştirme ilkelerini tetikler.

Tek bir komutla en çok 5 milyon kaydı silebilirsiniz.

İzinler

Bu komutu çalıştırmak için en az Tablo Yöneticisi izinlerine sahip olmanız gerekir.

Sözdizimi

Not

Önizleme sırasında kullanılabilen basitleştirilmiş söz dizimi kullanım dışı bırakıldı.

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

.update[async] table TableName delete DeleteIdentifier append AppendIdentifier [with ( propertyName = propertyValue ] )<|
letDeleteIdentifier= DeletePredicate;
letEkLeyici= AppendPredicate;

Parametreler

Ad Tür Zorunlu Açıklama
async string Belirtilirse, komutun zaman uyumsuz modda çalıştığını gösterir.
TableName string ✔️ Güncelleştirilecek tablonun adı.
DeleteIdentifier string ✔️ Güncelleştirilmiş tabloya uygulanan silme koşulunu belirtmek için kullanılan tanımlayıcı adı.
DeletePredicate string ✔️ Sonuçları silmek için veri olarak kullanılan sorgu metni. Koşul, geçici silme koşuluyla aynı sınırlamalara sahiptir.
EkLeyici string ✔️ Güncelleştirilmiş tabloya uygulanan ekleme koşulunu belirtmek için kullanılan tanımlayıcı adı.
AppendPredicate string ✔️ Sonuçları eklenecek veri olarak kullanılan sorgu metni.

Önemli

  • Hem silme hem de ekleme önkoşulları uzak varlıkları, çapraz veritabanlarını ve kümeler arası varlıkları kullanamaz. Koşul, dış tabloya başvuramaz veya işlecini externaldata kullanamaz.
  • Ekleme ve silme sorgularının belirleyici sonuçlar üretmesi beklenir. Belirsiz sorgular beklenmeyen sonuçlara yol açabilir. Sorgu, yalnızca ve birden çok kez yürütülürse aynı verileri döndüreceği durumlarda belirleyicidir.
  • Sorgular yürütme içinde update birden çok kez yürütülebilir. Ara sorgu sonuçları tutarsızsa, update komutu beklenmeyen sonuçlar üretebilir.

Desteklenen özellikler

Adı Tür Açıklama
whatif ikili ise true, herhangi bir kaydı eklemeden/silmeden her parçaya eklenecek/silinecek kayıt sayısını döndürür. Varsayılan değer: false.
Dağıtılmış ikili ise true, komut sorguyu paralel olarak yürüten tüm düğümlerden alır. Varsayılan false değeridir. Bkz. performans ipuçları.

Önemli

Verileri silmeden veya eklemeden önce önkoşulları doğrulamak için güncelleştirmeyi yürütmeden önce modda çalıştırmanızı whatif öneririz.

Döndürülenler

Komutun sonucu, her kaydın yeni verilerle oluşturulan veya kayıtların silindiği bir kapsamı temsil ettiği bir tablodur.

Adı Tür Açıklama
Tablo string Kapsamın oluşturulduğu veya silindiği tablo.
Eylem string Kapsam üzerinde gerçekleştirilen eyleme bağlı olarak oluşturun veya silin .
ExtentId guid Komutu tarafından oluşturulan veya silinen kapsam için benzersiz tanımlayıcı.
RowCount long komutu tarafından belirtilen ölçüde oluşturulan veya silinen satır sayısı.

Gerçekleştirilmiş görünümler arasında .update table seçim yapma

Bir tabloda aynı hedefe ulaşmak için komutunu veya gerçekleştirilmiş görünümü kullanabileceğiniz .update table senaryolar vardır. Örneğin, her kaydın en son sürümünü tutmak için gerçekleştirilmiş bir görünüm veya yeni bir sürüm kullanılabilir olduğunda kayıtları güncelleştirmek için bir güncelleştirme kullanılabilir.

Hangi yöntemi kullanacağınıza karar vermek için aşağıdaki yönergeleri kullanın:

  • Güncelleştirme deseniniz gerçekleştirilmiş görünümler tarafından desteklenmiyorsa güncelleştirme komutunu kullanın.
  • Kaynak tabloda yüksek bir alma birimi varsa ancak yalnızca birkaç güncelleştirme varsa, güncelleştirme komutunu kullanmak daha yüksek performanslı olabilir ve gerçekleştirilmiş görünümlerden daha az önbellek veya depolama alanı kullanabilir. Bunun nedeni, gerçekleştirilmiş görünümlerin alınan tüm verileri yeniden işlemesi gerektiğinden, ekleme veya silme koşullarını temel alarak güncelleştirilecek tek tek kayıtları tanımlamaktan daha az verimlidir.
  • Gerçekleştirilmiş görünümler tam olarak yönetilen bir çözümdür. Gerçekleştirilmiş görünüm bir kez tanımlanır ve sistem tarafından arka planda gerçekleştirme gerçekleşir. Güncelleştirme komutu, her güncelleştirme olduğunda güncelleştirme komutunu açıkça yürüten bir düzenleme işlemi (örneğin, Azure Data Factory, Logic Apps, Power Automate ve diğerleri) gerektirir. Gerçekleştirilmiş görünümler kullanım örneğinize yetecek kadar iyi çalışırsa, gerçekleştirilmiş görünümlerin kullanılması daha az yönetim ve bakım gerektirir.

Performans ipuçları

  • Veri alımı, sorgu çalıştırma da dahil olmak üzere kümedeki eşzamanlı etkinlikleri etkileyebilecek yoğun kaynak kullanan bir işlemdir. Şu yoğun kaynak kullanan eylemlerden kaçınmanızı öneririz: aynı anda çok sayıda .update komut çalıştırma ve dağıtılmış özelliğin yoğun kullanımı.
  • Ekleme verilerini işlem başına 1 GB'tan az olacak şekilde sınırlayın. Gerekirse, birden çok güncelleştirme komutu kullanın.
  • distributed Bayrağı true yalnızca sorgu tarafından oluşturulan veri miktarı büyükse, 1 GB'ı aştığında ve serileştirme gerektirmediyse olarak ayarlayın: 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.

Örnekler

Örnekler için aşağıdaki tabloyu kullanacağız:

.set-or-replace Employees <|
  range i from 1 to 100 step 1
  | project Id=i
  | extend Code = tostring(dynamic(["Customer", "Employee"])[Id %2])
  | extend Color = tostring(dynamic(["Red", "Blue", "Gray"])[Id %3])

Bu komut, aşağıdakilerle başlayan 100 kaydı olan bir tablo oluşturur:

Kimlik Kod Color
1 Personel Mavi
2 Customer Gri
3 Personel Kırmızı
4 Customer Mavi
5 Personel Gri
6 Customer Kırmızı
6 Personel Mavi

Tek satırdaki tek bir sütunu güncelleştirme

Aşağıdaki örnek, tek bir satırdaki tek bir sütunu güncelleştirir:

.update table Employees delete D append A with(whatif=true) <|
    let D = Employees
      | where Id==3;
    let A = Employees
      | where Id==3
      | extend Color="Orange";

Bunun whatif true olarak ayarlandığına dikkat edin. Bu sorgudan sonra tablo değiştirilmez, ancak komut bir satırın silindiği bir uzantının ve bir satırla yeni bir uzantının olacağını döndürür.

Aşağıdaki komut güncelleştirmeyi gerçekten gerçekleştirir:

.update table Employees delete D append A <|
    let D = Employees
      | where Id==3;
    let A = Employees
      | where Id==3
      | extend Color="Orange";

Birden çok satırda tek bir sütunu güncelleştirme

Aşağıdaki örnek, tek bir sütunda Color mavi değerine sahip olan satırlarda Yeşil değerine güncelleştirilir.

.update table Employees delete D append A <|
    let D = Employees
        | where Code=="Employee"
        | where Color=="Blue";
    let A = D
      | extend Color="Green";

Burada, ekleme koşulundaki tanımda silme tanımlayıcısını yeniden kullandık.

Birden çok satırdaki birden çok sütunu güncelleştirme

Aşağıdaki örnek, tüm satırlardaki birden çok sütunu gri renkle güncelleştirir.

.update table Employees delete D append A <|
    let D = Employees
      | where Color=="Gray";
    let A = D
      | extend Code=strcat("ex-", Code)
      | extend Color="";

Başka bir tablo kullanarak satırları güncelleştirme

Bu örnekte ilk adım aşağıdaki eşleme tablosunu oluşturmaktır:

.set-or-replace ColorMapping <|
  datatable(OldColor:string, NewColor:string)[
    "Red", "Pink",
    "Blue", "Purple",
    "Gray", "LightGray",
    "Orange", "Yellow",
    "Green", "AppleGreen"
  ]

Bu eşleme tablosu daha sonra özgün tablodaki bazı renkleri güncelleştirmek için kullanılır:

.update table Employees delete D append A <|
  let D = Employees
    | where Code=="Customer";
  let A = D
    | lookup ColorMapping on $left.Color==$right.OldColor
    | project Id, Code, Color=NewColor

Hazırlama tablosuyla satırları güncelleştirme

Popüler bir desen, ana tabloyu güncelleştirmeden önce verileri bir hazırlama tablosuna almaktır.

İlk komut bir hazırlama tablosu oluşturur:

.set-or-replace MyStagingTable <|
    range i from 70 to 130 step 5
    | project Id=i
    | extend Code = tostring(dynamic(["Customer", "Employee"])[Id %2])
    | extend Color = tostring(dynamic(["Red", "Blue", "Gray"])[Id %3])

Sonraki komut, ana tabloyu hazırlama tablosundaki verilerle güncelleştirir:

.update table Employees delete D append A <|
    let A = MyStagingTable;
    let D = Employees
        | join kind=leftsemi MyStagingTable on Id
        | where true;

Hazırlama tablosundaki bazı kayıtlar ana tabloda (yani, vardı Id>100) mevcut değildi, ancak yine de ana tabloya (upsert davranışı) eklenmişti.

Bileşik anahtar

İlk komut bileşik anahtarlara sahip bir tablo oluşturur:

.set-or-replace VersionedArticle <|
  datatable(ArticleId:string, Version:int, Detail:string)[
    "A", 1, "Early version",
    "B", 1, "News about mobiles",
    "C", 1, "Opinion article",
    "B", 2, "Revision about brand X",
    "B", 3, "Revision about brand Y",
    "C", 2, "Fact check"
  ]

Sonraki komut, genişletilmiş söz dizimini kullanarak belirli bir kaydı güncelleştirir:

.update table VersionedArticle delete D append A <|
  let D = VersionedArticle
    | where ArticleId=="B"
    | where Version==3;
  let A = VersionedArticle
    | where ArticleId=="B"
    | where Version==3
    | extend Detail = "Revision about brand Z";