Aracılığıyla paylaş


.update table komutu (önizleme)

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

Uyarı

Bu komut kurtarılamaz.

Not

Bir güncelleştirme ilkesinin.update table kaynağı olan bir tabloda komutunu ç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 komutta en fazla 5 milyon kaydı silebilirsiniz.

İzinler

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

Syntax

İki söz dizimi seçeneği vardır: Basitleştirilmiş söz dizimi ve Genişletilmiş söz dizimi.

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

Genişletilmiş söz dizimi

Genişletilmiş söz dizimi, satırları silmek için bir sorgu ve satırları eklemek için farklı bir sorgu tanımlama esnekliği sunar:

.updatetableTablenamedeleteDeleteIdentifierappendAppendIdentifier [with(propertyName=propertyValue)] <|
letDeleteIdentifier=DeletePredicate;
letAppendIdentifier=AppendPredicate;

Genişletilmiş söz dizimi için parametreler

Ad Tür Gerekli Açıklama
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ı silinecek veri olarak kullanılan sorgu metni. Silme koşulu en az bir where işleç içermelidir ve yalnızca şu işleçleri kullanabilir: extend, where, projectjoin ve lookup.
AppendIdentifier 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 koşulu uzak varlıkları, çapraz db'yi ve kümeler arası varlıkları kullanamaz. Koşullar 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, birden çok kez yürütülürse aynı verileri döndüreceği durumlarda ve yalnızca belirlenecidir.
  • Sorgular yürütme içinde update birden çok kez yürütülebilir. Ara sorgu sonuçları tutarsızsa update komutu beklenmeyen sonuçlara neden olabilir.

Basitleştirilmiş söz dizimi

Basitleştirilmiş söz dizimi, bir ekleme sorgusunun yanı sıra bir anahtar gerektirir. Anahtar, tablodaki benzersiz değerleri temsil eden tablodaki bir sütundur. Bu sütun, tablodan hangi satırların silinmesi gerektiğini tanımlamak için kullanılır. Özgün tablo ile ekleme sorgusu arasında, bu sütunla ilgili olarak değerleri üzerinde anlaşmaya varan satırları belirlemek için birleştirme gerçekleştirilir.

.updatetableIDColumnName üzerinde TableName [with(propertyName=propertyValue)]<|
appendQuery

Basitleştirilmiş söz dizimi için parametreler

Ad Tür Gerekli Açıklama
TableName string ✔️ Güncelleştirilecek tablonun adı.
IDColumnName string ✔️ Satırları tanımlayan sütunun adı. Sütun hem tabloda hem de appendQuery'de bulunmalıdır.
appendQuery string ✔️ Sonuçları eklenecek veri olarak kullanılan bir sorgunun veya yönetim komutunun metni. Sorgunun şeması, tablonun şemasıyla aynı olmalıdır.

Önemli

  • Ekleme sorgusu uzak varlıkları, çapraz veritabanlarını ve kümeler arası varlıkları kullanamaz, dış tabloya başvuramaz veya işlecini externaldata kullanamaz.
  • Ekleme sorgusunun belirleyici sonuçlar üretmesi beklenir. Belirsiz sorgular beklenmeyen sonuçlara yol açabilir. Sorgu, yalnızca birden çok kez yürütülürse aynı verileri döndürdüğünde ve döndürdüğünde 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çlara neden olabilir.

Desteklenen özellikler

Ad Tür Description
Whatıf bool 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.

Ö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şturulmuş veya kayıtların silinmiş olduğu bir kapsamı temsil ettiği bir tablodur.

Ad Tür Description
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ı.

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

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 tablo yüksek bir alım hacmine sahipse ancak yalnızca birkaç güncelleştirme varsa, update komutunu kullanmak daha yüksek performanslı olabilir ve gerçekleştirilmiş görünümlere göre 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, güncelleştirmeler olduğunda güncelleştirme komutunu açıkça yürüten, düzenli bir işlem (ö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.

Örnekler - Basitleştirilmiş söz dizimi

Aşağıdaki örneklerde Basitleştirilmiş söz dizimi kullanılır.

Genel örnek

Aşağıdaki tablo oluşturulur.

.set-or-replace People <|
datatable(Name:string, Address:string)[
  "Alice", "221B Baker street",
  "Bob", "1600 Pennsylvania Avenue",
  "Carl", "11 Wall Street New York"
]
Name Adres
Alice 221B Baker caddesi
Bob 1600 Pennsylvania Avenue
Carl 11 Wall Street New York

Ardından aşağıdaki güncelleştirme komutu çalıştırılır:

.update table People on Name <|
  datatable(Name:string, Address:string)[
  "Alice", "2 Macquarie Street",
  "Diana", "350 Fifth Avenue" ]

appendQuery aşağıdaki sonuç kümesini verir:

Name Adres
Alice 2 Macquarie Caddesi
Diana 350 Beşinci Cadde

Sütunda güncelleştirdiğimiz içinNameAlice satırı silinir ve güncelleştirmeden sonra tablo şöyle görünür:

Name Adres
Alice 2 Macquarie Caddesi
Bob 1600 Pennsylvania Avenue
Carl 11 Wall Street New York
Diana 350 Beşinci Cadde

Diana'nın orijinal tabloda olmadığına dikkat edin. Bu geçerli ve karşılık gelen satır silinmedi.

Benzer şekilde, özgün tabloda Alice adlı birden çok satır olsaydı, bunların tümü silinir ve sonundaki tek Alice satırıyla değiştirilirdi.

Örnek tablo

Sonraki örnekler aşağıdaki tabloyu temel alır:

.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:

ID Kod Renk
1 Çalışan Mavi
2 Müşteri Gri
3 Çalışan Kırmızı
4 Müşteri Mavi
5 Çalışan Gri
6 Müşteri Kırmızı
6 Çalışan Mavi

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

Aşağıdaki örnek, ekleme koşuluyla eşleşen tek bir satırdaki tek bir sütunu güncelleştirmek için basitleştirilmiş söz dizimini kullanır:

.update table Employees on Id with(whatif=true) <|
    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 aslında güncelleştirmeyi gerçekleştirir:

.update table Employees on Id <|
  Employees
  | where Id==3
  | extend Color="Orange"

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

Aşağıdaki örnek, tek bir sütundaki Color güncelleştirmeleri, ekleme koşuluyla eşleşen satırlardaki Yeşil değerine güncelleştirir.

.update table Employees on Id <|
  Employees
  | where Code=="Employee"
  | where Color=="Blue"
  | extend Color="Green"

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

Aşağıdaki örnek, ekleme koşuluyla eşleşen tüm satırlarda birden çok sütunu güncelleştirir.

.update table Employees on Id <|
  Employees
  | where Color=="Gray"
  | 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 ekleme koşuluna ve buna karşılık gelen "Yeni Renk"e göre güncelleştirmek için kullanılır:

.update table Employees on Id <|
  Employees
  | where Code=="Customer"
  | 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 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 on Id <|
  MyStagingTable

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

Örnekler - Genişletilmiş söz dizimi

Aşağıdaki örneklerde Genişletilmiş söz dizimi kullanılır.

Bileşik anahtar

Basitleştirilmiş söz dizimi, tek bir sütunun silinecek satırları çıkarsamak için appendQuery'deki satırlarla eşleşebileceğini varsayar. Bileşik anahtarlar gibi birden fazla sütun kullanılabilir.

İ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";

Tam denetim

Aşağıdaki örnekte, Çalışan içeren Code tüm satırlar silinir ve ÇalışanveColor mor içeren Code satırlar eklenir. Eklenenden daha fazla satır silindi.

.update table Employees delete D append A <|
  let D = Employees
    | where Code=="Employee";
  let A = Employees
    | where Code=="Employee"
    | where Color=="Purple"
    | extend Code="Corporate"
    | extend Color="Mauve";

Bu eylem türü yalnızca silme ve ekleme işlemlerini bağımsız olarak denetleyen genişletilmiş söz dizimi kullanılarak mümkündür.