.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 table
kaynağı 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 ] )
<|
let
DeleteIdentifier=
DeletePredicate;
let
EkLeyici=
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.
- Ö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ç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";
İ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