.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:
.update
table
Tablenamedelete
DeleteIdentifierappend
AppendIdentifier [with
(
propertyName=
propertyValue)
] <|
let
DeleteIdentifier=
DeletePredicate;
let
AppendIdentifier=
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 , project join 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.
- Örneğin bu işleçler
take
belirleyici olmadığından işleçsample
, işleç,rand
işlev ve diğer işleçlerin kullanılması önerilmez.
- Örneğin bu işleçler
- 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.
.update
table
IDColumnName ü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.
- Örneğin bu işleçler
take
belirleyici olmadığından işleçsample
, işleç,rand
işlev ve diğer işleçlerin kullanılması önerilmez.
- Örneğin bu işleçler
- 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çinName
Alice 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.
İlgili içerik
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