Adlandırılmış ifadeler kullanan sorguları iyileştirme
Bu makalede, bir sorguda adlandırılmış ifadelerin tekrar kullanımını iyileştirme adımları anlatılmaktadır.
Kusto Sorgu Dili'da, adları karmaşık ifadelere çeşitli yollarla bağlayabilirsiniz:
- Let deyiminde
- as işlecinde
- Kullanıcı tanımlı işlevlerin resmi parametreler listesinde
Bir sorguda bu adlandırılmış ifadelere başvurduğunda aşağıdaki adımlar gerçekleşir:
- Adlandırılmış ifade içindeki hesaplama değerlendirilir. Bu hesaplama bir skaler veya tablosal değer üretir.
- Adlandırılmış ifade hesaplanan değerle değiştirilir.
Aynı ilişkili ad birden çok kez kullanılıyorsa, temel alınan hesaplama birden çok kez yinelenir. Bu ne zaman sorun olur?
- Hesaplamalar çok fazla kaynak kullandığında ve birçok kez kullanıldığında.
- Hesaplama belirleyici olmadığında, ancak sorgu aynı değeri döndürmek için tüm çağrıları varsayar.
Risk azaltma
Bu endişeleri azaltmak için sorgu sırasında hesaplama sonuçlarını bellekte gerçekleştirebilirsiniz. Adlandırılmış hesaplamanın tanımlanma şekline bağlı olarak farklı gerçekleştirme stratejileri kullanırsınız:
Tablosal işlevler
Tablosal işlevler için aşağıdaki stratejileri kullanın:
- let deyimleri ve işlev parametreleri: materialize() işlevini kullanın.
- as işleci: İpucu değerini olarak
true
ayarlayınhint.materialized
.
Örneğin, aşağıdaki sorgu belirleyici olmayan tablosal örnek işlecini kullanır:
Not
Tablolar genel olarak sıralanmadığından, sorgudaki tablo başvuruları tanıma göre belirlenimci değildir.
Materialize işlevini kullanmadan davranış
range x from 1 to 100 step 1
| sample 1
| as T
| union T
Çıkış
x |
---|
63 |
92 |
Materialize işlevini kullanma davranışı
range x from 1 to 100 step 1
| sample 1
| as hint.materialized=true T
| union T
Çıkış
x |
---|
95 |
95 |
Skaler işlevler
Belirlenemeyen skaler işlevler toscalar() kullanılarak tam olarak bir kez hesaplanmaya zorlanabilir.
Örneğin, aşağıdaki sorgu rand() adlı belirlenimi olmayan işlevi kullanır:
let x = () {rand(1000)};
let y = () {toscalar(rand(1000))};
print x, x, y, y
Çıkış
print_0 | print_1 | print_2 | print_3 |
---|---|---|---|
166 | 137 | 70 | 70 |
İ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