Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sürüm açılan listesini kullanarak hizmetler arasında geçiş yapın. Gezinti hakkında daha fazla bilgi edinin.
Şunlar için geçerlidir: ✅ Microsoft Fabric ✅ Azure Veri Gezgini ✅ Azure İzleyici ✅ Microsoft Sentinel
Bu makalede, sorguda adlandırılmış ifadelerin tekrar kullanımını iyileştirme işlemi açıklanır.
Kusto Sorgu Dili'nde, 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şvurdığınızda 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 oluşturur.
- Adlandırılmış ifade hesaplanan değerle değiştirilir.
Aynı ilişkili ad birden çok kez kullanılırsa, temel hesaplama birden çok kez yinelenir. Bu ne zaman sorun olur?
- Hesaplamalar birçok kaynak tükettiğinde 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.
Mitigation
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 kullanacaksı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
hint.materializedayarlayıntrue.
Örneğin, aşağıdaki sorgu belirleyici olmayan tablosal örnek işlecini kullanır:
Uyarı
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 , toskalar() 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 |