Let deyimi
Deyim let
, bir ifadeye veya işleve eşit bir değişken adı ayarlamak veya görünümler oluşturmak için kullanılır.
let
deyimleri şunlar için kullanışlıdır:
- Karmaşık bir ifadeyi her biri bir değişkenle temsil edilen birden çok parçaya bölme.
- Okunabilirlik için sorgu gövdesi dışında sabitleri tanımlama.
- Bir değişkeni bir kez tanımlama ve sorgu içinde birden çok kez kullanma.
Değişken daha önce iç içe deyimler gibi başka bir değeri temsil ettiyse, en let
içteki deyim uygulanır.
Deyimin tek bir sorgudaki let
birden çok kullanımını iyileştirmek için bkz. Adlandırılmış ifadeler kullanan sorguları iyileştirme.
Not
deyimi let
, bir adı hesaplamanın hesaplanan değerine değil hesaplamaya bağlar. Bu davranış, hesaplamanın birden çok kez değerlendirilmesi nedeniyle aynı ada yapılan birden çok başvurunun farklı değerler döndürebileceği anlamına gelir. İstenen davranış bu değilse toscalar() veya materialize() kullanın.
Sözdizimi: Skaler veya tablosal ifadeler
let
Adı=
Ifa -de
Önemli
Let deyimlerinin ardından noktalı virgül gelmelidir. let deyimleri arasında veya let deyimleri ile diğer sorgu deyimleri arasında boş satır olamaz.
Söz dizimi kuralları hakkında daha fazla bilgi edinin.
Parametreler
Ad | Tür | Gerekli | Açıklama |
---|---|---|---|
Ad | string |
✔️ | Değişken adı. Adından köşeli ayraçlarla kaçabilirsiniz. Örneğin, ["Name with spaces"] . |
Expression | string |
✔️ | Skaler veya tablo sonucuna sahip bir ifade. Örneğin, skaler sonucu olan bir ifade olur let one=1; ve tablo sonucuna sahip bir ifade olur let RecentLog = Logs | where Timestamp > ago(1h) . |
Sözdizimi: Görünüm veya işlev
let
Adı=
[view
] (
[ Parametreler ])
{
İşlev Gövdesi}
Önemli
Let deyimlerinin ardından noktalı virgül gelmelidir. let deyimleri arasında veya let deyimleri ile diğer sorgu deyimleri arasında boş satır olamaz.
Söz dizimi kuralları hakkında daha fazla bilgi edinin.
Parametreler
Ad | Tür | Gerekli | Açıklama |
---|---|---|---|
İşlev Gövdesi | string |
✔️ | Kullanıcı tanımlı bir işlev veren ifade. |
view |
string |
Yalnızca parametresiz let bir deyimle ilgilidir. Kullanıldığında deyimi, tabloların let /görünümlerin joker karakter seçimine sahip bir union işleç içeren sorgulara eklenir. Örnek için bkz. Görünüm veya sanal tablo oluşturma. |
|
Parametreler | string |
Sıfır veya daha fazla virgülle ayrılmış tablosal veya skaler işlev parametresi. Tablosal türdeki her parametre için, parametre TableNameTableSchema biçiminde olmalıdır. TableSchema, ColumnName : : ColumnType biçimindeki sütunların virgülle ayrılmış bir listesi veya joker karakterdir (* ). Sütunlar belirtilirse, giriş tablosal bağımsız değişkeni bu sütunları içermelidir. Joker karakter belirtilirse, giriş tablosal bağımsız değişkeninin herhangi bir şeması olabilir. İşlev gövdesindeki sütunlara başvurmak için bunların belirtilmesi gerekir. Örnekler için bkz. Şema içeren tablosal bağımsız değişken ve joker karakterli Tablosal bağımsız değişken.Skaler türündeki her parametre için, parametre adını ve parametre türünü Ad : Türü biçiminde sağlayın. Ad FunctionBody içinde görünebilir ve kullanıcı tanımlı işlev çağrıldığında belirli bir değere bağlıdır. Desteklenen tek türler , , string long , , datetime , timespan , real , dynamic ve bu türlerin diğer adlarıdırbool . |
Not
- Tablosal parametreler skaler parametrelerden önce görünmelidir.
- İki deyim noktalı virgülle ayrılmalıdır.
Örnekler
Skaler değerleri tanımlama
Aşağıdaki örnekte skaler ifade deyimi kullanılır.
let n = 10; // number
let place = "Dallas"; // string
let cutoff = ago(62d); // datetime
Events
| where timestamp > cutoff
and city == place
| take n
Aşağıdaki örnek, gösterimi kullanarak ['name']
adı some number
bağlar ve ardından tablosal ifade deyiminde kullanır.
let ['some number'] = 20;
range y from 0 to ['some number'] step 5
Skaler hesaplama ile kullanıcı tanımlı işlev oluşturma
Bu örnekte, skaler hesaplama için bağımsız değişkenlerle let deyimi kullanılır. Sorgu, iki sayıyı çarpma işlevini MultiplyByN
tanımlar.
let MultiplyByN = (val:long, n:long) { val * n };
range x from 1 to 5 step 1
| extend result = MultiplyByN(x, 5)
Çıkış
x | sonuç |
---|---|
1 | 5 |
2 | 10 |
3 | 15 |
4 | 20 |
5 | 25 |
Girişi kırpan kullanıcı tanımlı bir işlev oluşturma
Aşağıdaki örnek, girişten baştaki ve sondakileri kaldırır.
let TrimOnes = (s:string) { trim("1", s) };
range x from 10 to 15 step 1
| extend result = TrimOnes(tostring(x))
Çıkış
x | sonuç |
---|---|
10 | 0 |
11 | |
12 | 2 |
13 | 3 |
14 | 4 |
15 | 5 |
Birden çok let deyimi kullanma
Bu örnek, bir deyimin () başkafoo1
bir deyimi (foo2
) kullandığı iki let deyimini tanımlar.
let foo1 = (_start:long, _end:long, _step:long) { range x from _start to _end step _step};
let foo2 = (_step:long) { foo1(1, 100, _step)};
foo2(2) | count
Çıkış
sonuç |
---|
50 |
Görünüm veya sanal tablo oluşturma
Bu örnekte, bir veya sanal tablosu oluşturmakview
için let deyiminin nasıl kullanılacağı gösterilmektedir.
let Range10 = view () { range MyColumn from 1 to 10 step 1 };
let Range20 = view () { range MyColumn from 1 to 20 step 1 };
search MyColumn == 5
Çıkış
$table | MyColumn |
---|---|
Aralık10 | 5 |
Aralık20 | 5 |
Materialize işlevi kullanma
işlevi, materialize()
sorgu yürütme sırasında alt sorgu sonuçlarını önbelleğe almanızı sağlar. işlevini kullandığınızda materialize()
veriler önbelleğe alınır ve sonucun sonraki çağrıları önbelleğe alınmış verileri kullanır.
let totalPagesPerDay = PageViews
| summarize by Page, Day = startofday(Timestamp)
| summarize count() by Day;
let materializedScope = PageViews
| summarize by Page, Day = startofday(Timestamp);
let cachedResult = materialize(materializedScope);
cachedResult
| project Page, Day1 = Day
| join kind = inner
(
cachedResult
| project Page, Day2 = Day
)
on Page
| where Day2 > Day1
| summarize count() by Day1, Day2
| join kind = inner
totalPagesPerDay
on $left.Day1 == $right.Day
| project Day1, Day2, Percentage = count_*100.0/count_1
Çıkış
Gün1 | Gün2 | Yüzde |
---|---|---|
2016-05-01 00:00:00.0000000 | 2016-05-02 00:00:00.0000000 | 34.0645725975255 |
2016-05-01 00:00:00.0000000 | 2016-05-03 00:00:00.0000000 | 16.618368960101 |
2016-05-02 00:00:00.0000000 | 2016-05-03 00:00:00.0000000 | 14.6291376489636 |
İç içe let deyimlerini kullanma
İç içe let deyimlerine, kullanıcı tanımlı işlev ifadesi içinde de dahil olmak üzere izin verilir. let deyimleri ve bağımsız değişkenleri işlev gövdesinin hem geçerli hem de iç kapsamında uygulanır.
let start_time = ago(5h);
let end_time = start_time + 2h;
T | where Time > start_time and Time < end_time | ...
Şema ile tablosal bağımsız değişken
Aşağıdaki örnek, tablo parametresinin T
türünde string
bir sütuna State
sahip olması gerektiğini belirtir. Tablo T
başka sütunlar da içerebilir, ancak bildirilemediğinden işlevde StateState
bunlara başvurulamazsınız.
let StateState=(T: (State: string)) { T | extend s_s=strcat(State, State) };
StormEvents
| invoke StateState()
| project State, s_s
Çıkış
Durum | s_s |
---|---|
ATLANTIK GÜNEY | ATLANTIC SOUTHATLANTIC SOUTH |
FLORİDA | FLORIDAFLORIDA |
FLORİDA | FLORIDAFLORIDA |
GÜRCİSTAN | GEORGIAGEORGIA |
MİSSİSSİPPİ | MISSISSIPPIMISSISSIPPI |
... | ... |
Joker karakterli tablosal bağımsız değişken
Tablo parametresi T
herhangi bir şemaya sahip olabilir ve işlev CountRecordsInTable
çalışır.
let CountRecordsInTable=(T: (*)) { T | count };
StormEvents | invoke CountRecordsInTable()
Çıkış
Count |
---|
59,066 |
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