Öğretici: kusto sorguları kullanma

Kusto sorgu dili hakkında bilgi almanın en iyi yolu, dile yönelik "fikir" almak için bazı temel sorgulara bakmaktan sorumludur. Örnek veriler içeren bir veritabanıkullanmanızı öneririz. Bu öğreticide gösterilen sorguların bu veritabanında çalışması gerekir. StormEventsÖrnek veritabanındaki tablo, Birleşik Devletler gerçekleşen fırtınalarını hakkında bazı bilgiler sağlar.

Satırları say

Örnek veritabanımızda adlı StormEvents bir tablo vardır. tablonun ne kadar büyük olduğunu öğrenmek istiyoruz. Bu nedenle, içeriğini tablodaki satırları sayan bir işlece yönelttireceğiz.

Sözdizimi notunun: sorgu bir veri kaynağıdır (genellikle tablo adıdır), isteğe bağlı olarak bir veya daha fazla kanal karakteri ve bazı tablosal işleci gelir.

StormEvents | count

Çıktı aşağıda verilmiştir:

Count
59066

Daha fazla bilgi için bkz. Count işleci.

Sütunların bir alt kümesini seçin: Proje

Yalnızca istediğiniz sütunları seçmek için projeyi kullanın. Hem projeyi hem de Take işleçlerini kullanan aşağıdaki örneğe bakın.

Boole ifadesine göre filtrele: nerede

Yalnızca flood Şubat-2007 ' de bulunan California olayları görelim:

StormEvents
| where StartTime > datetime(2007-02-01) and StartTime < datetime(2007-03-01)
| where EventType == 'Flood' and State == 'CALIFORNIA'
| project StartTime, EndTime , State , EventType , EpisodeNarrative

Çıktı aşağıda verilmiştir:

StartTime EndTime Durum Olay türü EpisodeNarrative
2007-02-19 00:00:00.0000000 2007-02-19 08:00:00.0000000 FOR Taşmalarıyla Güney San Joaquin Valley 'Te hareket eden bir sistem, Batı 'nın Ilçesini, 19 ' un ilk sabah saatlerinde kısa bir süre sonra Küçük taşımalar, Taft 'nin yakınında durum üst sınırı 166 ile bildirilmiştir.

N satırı göster: Al

Bazı verileri görelim. Beş satırlık rastgele bir örnekte neler var?

StormEvents
| take 5
| project  StartTime, EndTime, EventType, State, EventNarrative  

Çıktı aşağıda verilmiştir:

StartTime EndTime Olay türü Durum Eventanlatıcı
2007-09-18 20:00:00.0000000 2007-09-19 18:00:00.0000000 Ağır yağmur YAPıLACAK 9 inç kadar, Coastal Volusia Ilçenin parçaları arasında 24 saatlik bir dönemde balıklardan kaçının.
2007-09-20 21:57:00.0000000 2007-09-20 22:05:00.0000000 Tornado dili YAPıLACAK Bir Tornado, Batı ile beyaz Gölü Gölü 'ın kuzey ucundaki duyulma kasalarına göre aşağı doğru aşağı doğru. Tornado, kuzey kuzeybatı 'i euss ile hareket ettirdiğinden EF1 kuvvetini hızlıca belirtir. İzleme, en fazla iki mil uzunluğundadır ve 300 yarda maksimum genişliğine sahiptir. Tornado yok 7 ev yok. Yirmi yedi ev, büyük bir hasar aldı ve 81 ev, küçük hasar bildirdi. $6.200.000 konumunda önemli bir sakatlama ve özellik bozulması ayarlanmadı.
2007-09-29 08:11:00.0000000 2007-09-29 08:11:00.0000000 Su Spout ATLANTIK GÜNEY Bir su ve Melbourne plaj ve kısa bir süreliğine kısa bir süre içinde düzenlenmiş bir su.
2007-12-20 07:50:00.0000000 2007-12-20 07:53:00.0000000 Thunderfırtınası Rüzgar SıSıTIK PPI Çok sayıda büyük ağaç, daha düşük güç çizgileri ile kaltdır. Doğu Adams İlçesi içinde hasar gerçekleşti.
2007-12-30 16:00:00.0000000 2007-12-30 16:05:00.0000000 Thunderfırtınası Rüzgar GÜRCİSTAN Ülke dağıtımı, Quincey Batten döngüsünün yakınında 206. Ağaç kaldırma maliyeti tahmini.

Ancak, tablodaki satırları belirli bir sırada gösterir, bu nedenle bunları sıralayalım. (sınırAl için bir diğer addır ve aynı etkiye sahiptir.)

Sıra sonuçları: sıralama, üst

  • Sözdizimi notunun: bazı işleçler, gibi anahtar sözcüklerle tanıtılan parametrelere sahiptir.
  • Aşağıdaki örnekte, desc siparişlerin sonuçları azalan sırada ve asc siparişlerde artan düzende sonuçlanır.

Belirli bir sütuna göre sıralanan ilk n satırı göster:

StormEvents
| top 5 by StartTime desc
| project  StartTime, EndTime, EventType, State, EventNarrative  

Çıktı aşağıda verilmiştir:

StartTime EndTime Olay türü Durum Eventanlatıcı
2007-12-31 22:30:00.0000000 2007-12-31 23:59:00.0000000 Kış fırtınası MICHIGAN Bu ağır kar olayı, yeni yıl gününün ilk sabah saati ile devam eder.
2007-12-31 22:30:00.0000000 2007-12-31 23:59:00.0000000 Kış fırtınası MICHIGAN Bu ağır kar olayı, yeni yıl gününün ilk sabah saati ile devam eder.
2007-12-31 22:30:00.0000000 2007-12-31 23:59:00.0000000 Kış fırtınası MICHIGAN Bu yoğun kar olayı, yılbaşında sabah erken saatlere kadar devam etti.
2007-12-31 23:53:00.0000000 2007-12-31 23:53:00.0000000 Yüksek Rüzgar CALİFORNİA Kuzeyden kuzeydoğuya doğru yaklaşık 58 km/sn'ye varan rüzgarların, Ventura ilçesi dağlarında bildiriliyor.
2007-12-31 23:53:00.0000000 2007-12-31 23:53:00.0000000 Yüksek Rüzgar CALİFORNİA Warm RawS algılayıcısı, 58 mil hızında kuzey rüzgarları olduğunu bildirdi.

Sıralama kullanarak aynı sonucu elde etmek için şunlarıgerçekleştirin:

StormEvents
| sort by StartTime desc
| take 5
| project  StartTime, EndTime, EventType, EventNarrative

Türetilmiş sütunları hesaplama: genişletme

Her satırdaki bir değeri hesaparak yeni bir sütun oluşturun:

StormEvents
| limit 5
| extend Duration = EndTime - StartTime 
| project StartTime, EndTime, Duration, EventType, State

Çıktı aşağıda verilmiştir:

StartTime EndTime Süre Olay türü Durum
2007-09-18 20:00:00.0000000 2007-09-19 18:00:00.0000000 22:00:00 Ağır Yağmur FLORİDA
2007-09-20 21:57:00.0000000 2007-09-20 22:05:00.0000000 00:08:00 Kasırga FLORİDA
2007-09-29 08:11:00.0000000 2007-09-29 08:11:00.0000000 00:00:00 Açık Deniz Mavisi ATLANTIC SOUTH
2007-12-20 07:50:00.0000000 2007-12-20 07:53:00.0000000 00:03:00 Fırtına Rüzgarı MİSSİSSİPPİ
2007-12-30 16:00:00.0000000 2007-12-30 16:05:00.0000000 00:05:00 Fırtına Rüzgarı GÜRCİSTAN

Bir sütun adını yeniden kullanmak ve aynı sütuna hesaplama sonucu atamak mümkündür.

Örnek:

print x=1
| extend x = x + 1, y = x
| extend x = x + 1

Çıktı aşağıda verilmiştir:

x y
3 1

Skaler ifadeler tüm normal işleçleri (, -, *, /, %) içerebilir ve bir dizi kullanışlı işlev kullanılabilir.

Satır gruplarını toplama: özetleme

Her durumda oluşan olay sayısını girin:

StormEvents
| summarize event_count = count() by State

summarize , yan tümcesinde aynı değerlere sahip satırları birlikte gruplar ve ardından her grubu tek bir satırda birleştirmek için bir toplama işlevi (örneğin, count) kullanır. Bu durumda, her durum için bir satır ve bu durumdaki satır sayısı için bir sütun vardır.

Bir dizi toplama işlevi mevcuttur. Birkaç hesaplanan sütun üretmek için bir işleçte summarize birkaç toplama işlevi kullanabilirsiniz. Örneğin, durum başına storm sayısını ve durum başına benzersiz storm türlerinin toplamını elde olabiliriz. Ardından, en çok fırtınadan etkilenen durumları almak için top kullanabiliriz:

StormEvents 
| summarize StormCount = count(), TypeOfStorms = dcount(EventType) by State
| top 5 by StormCount desc

Çıktı aşağıda verilmiştir:

Durum StormCount TypeOfStorms
TEXAS 4701 27
KANSAS 3166 21
IOWA 2337 19
ILLİNOİS 2022 23
MİSSOURİ 2016 20

Bir işlecinin sonuçlarında summarize :

  • Her sütun içinde olarak adlandırılmış.by
  • Hesaplanan her ifadenin bir sütunu vardır.
  • Her değer bileşiminin by bir satırı vardır.

Skaler değerlere göre özetleme

yan tümcesinde skaler (sayısal, zaman veya aralık) by değerleri kullanabilirsiniz, ancak by işlevini kullanarak değerleri depolara koymak gerekir:

StormEvents
| where StartTime > datetime(2007-02-14) and StartTime < datetime(2007-02-21)
| summarize event_count = count() by bin(StartTime, 1d)

Sorgu tüm zaman damgasını bir günlük aralıklara azaltır:

StartTime event_count
2007-02-14 00:00:00.0000000 180
2007-02-15 00:00:00.0000000 66
2007-02-16 00:00:00.0000000 164
2007-02-17 00:00:00.0000000 103
2007-02-18 00:00:00.0000000 22
2007-02-19 00:00:00.0000000 52
2007-02-20 00:00:00.0000000 60

Bin () , birçok dilde floor () işleviyle aynıdır. Bu, özetlemenin satırları gruplara atayabilmesi için her değeri yalnızca sağladığınız mod 'un en yakın katına düşürür.

Grafik veya tablo görüntüleme: işleme

İki sütunu, bir grafiğin x ekseni ve y ekseni olarak kullanabilirsiniz:

StormEvents 
| summarize event_count=count(), mid = avg(BeginLat) by State 
| sort by mid
| where event_count > 1800
| project State, event_count
| render columnchart

Screenshot that shows a column chart of storm event counts by state.

İşlem sırasında project kaldırıldığımızda mid , grafiğin durumları o sırada göstermesini istiyorsanız hala buna ihtiyacımız var.

Kesinlikle konuşuyor, render sorgu dilinin bir parçası yerine istemcinin bir özelliğidir. Hala, dille tümleşiktir ve sonuçlarınız planlama için faydalıdır.

Timegrafiklerim

Sayısal depo gözlerine geri dönerek bir zaman serisi görüntüleyeceğiz:

StormEvents
| summarize event_count=count() by bin(StartTime, 1d)
| render timechart

Screenshot of a line chart of events binned by time.

Birden çok seri

Bir yan tümcede birden çok değer kullanarak her bir summarize by değer birleşimi için ayrı bir satır oluşturun:

StormEvents 
| where StartTime > datetime(2007-06-04) and StartTime < datetime(2007-06-10) 
| where Source in ("Source","Public","Emergency Manager","Trained Spotter","Law Enforcement")
| summarize count() by bin(StartTime, 10h), Source

Screenshot that shows a table count by source.

Yalnızca önceki örneğe terimi ekleyin render : | render timechart .

Screenshot that shows a line chart count by source.

render timechartİlk sütunu x ekseni olarak kullanan ve sonra diğer sütunları ayrı satırlar olarak gösteren dikkat edin.

Günlük ortalama dönem

Etkinlik ortalama günde nasıl farklılık gösterir?

Olayları, saat olarak bir gün içinde, saat olarak bir gün içinde say. Burada şunu floor yerine bin kullanıyoruz:

StormEvents
| extend hour = floor(StartTime % 1d , 1h)
| summarize event_count=count() by hour
| sort by hour asc
| render timechart

Screenshot that shows a timechart count by hour.

renderŞu anda süreleri doğru şekilde etiketleyip bunun yerine kullanabiliriz | render columnchart :

Screenshot that shows a column chart count by hour.

Birden çok günlük seriyi Karşılaştır

Etkinlik, farklı durumlardaki günün saati boyunca nasıl farklılık gösterir?

StormEvents
| extend hour= floor( StartTime % 1d , 1h)
| where State in ("GULF OF MEXICO","MAINE","VIRGINIA","WISCONSIN","NORTH DAKOTA","NEW JERSEY","OREGON")
| summarize event_count=count() by hour, State
| render timechart

Screenshot of a timechart by hour and state.

1hX eksenini bir süre yerine saat numarasına dönüştürmek için Böl:

StormEvents
| extend hour= floor( StartTime % 1d , 1h)/ 1h
| where State in ("GULF OF MEXICO","MAINE","VIRGINIA","WISCONSIN","NORTH DAKOTA","NEW JERSEY","OREGON")
| summarize event_count=count() by hour, State
| render columnchart

Screenshot that shows a column chart by hour and state.

Veri türlerini birleştirin

İki özel olay türünü nasıl bulabilir ve bunların her biri ne olur?

İlk EventType ve ikinci EventType ile fırtınası olayları çekebilir ve sonra iki küme üzerinde State birleştirebilirsiniz:

StormEvents
| where EventType == "Lightning"
| join (
    StormEvents 
    | where EventType == "Avalanche"
) on State  
| distinct State

Screenshot that shows joining the events lightning and avalanche.

Katılacak Kullanıcı oturumu örneği

Bu bölüm, StormEvents tablosunu kullanmaz.

Her kullanıcı oturumunun başlangıcını ve bitişini benzersiz bir KIMLIKLE işaretleyen olaylar içeren verileriniz olduğunu varsayalım.

Her kullanıcı oturumunun ne kadar sürdüğünü nasıl öğrenebilirsiniz?

extendİki zaman damgası için bir diğer ad sağlamak ve sonra oturum süresini hesaplamak için ' i kullanabilirsiniz:

Events
| where eventName == "session_started"
| project start_time = timestamp, stop_time, country, session_id
| join ( Events
    | where eventName == "session_ended"
    | project stop_time = timestamp, session_id
    ) on session_id
| extend duration = stop_time - start_time
| project start_time, stop_time, country, duration
| take 10

Screenshot of a table of results for user session extend.

Birleştirmeyi gerçekleştirmeden önce yalnızca ilgili sütunları seçmek için kullanmak project iyi bir uygulamadır. Aynı yan tümcesinde sütununu yeniden adlandırın timestamp .

Dağıtım çiz

StormEventsTabloya döndürülüyor, kaç tane fırtınalarını farklı uzunlukta?

StormEvents
| extend  duration = EndTime - StartTime
| where duration > 0s
| where duration < 3h
| summarize event_count = count()
    by bin(duration, 5m)
| sort by duration asc
| render timechart

Screenshot of timechart results for event count by duration.

Ya da şunları kullanabilirsiniz | render columnchart :

Screenshot of a column chart for event count timechart by duration.

Yüzdebirlik değerleri

Storms 'in farklı yüzdelerinde hangi süre aralıklarını bulduk?

Bu bilgileri almak için, bir dağıtım çizdenönceki sorguyu kullanın, ancak şunu ile değiştirin :

| summarize percentiles(duration, 5, 20, 50, 80, 95)

Bu durumda, bir by yan tümce kullandık, bu nedenle çıkış tek bir satırdır:

Screenshot of a table of results for summarize percentiles by duration.

Şu çıktıdan şunu görebiliriz:

  • fırtınalarını 'lerin 5 ' i 5 dakikadan kısa bir süre sürer.
  • fırtınalarını 'nin %50 ' i 1 saat ve 25 dakikadan az.
  • fırtınalarını 'nin %95 ' ü 2 saat ve 50 dakikadan az.

Her durum için ayrı bir döküm almak üzere sütununu her iki summarize işleçle ayrı olarak kullanın state :

StormEvents
| extend  duration = EndTime - StartTime
| where duration > 0s
| where duration < 3h
| summarize event_count = count()
    by bin(duration, 5m), State
| sort by duration asc
| summarize percentiles(duration, 5, 20, 50, 80, 95) by State

Table summarize percentiles duration by state.

Değerleri

StormEvents tablosunu kullanarak, doğrudan sakatlama 'in tüm sakatlama 'dan yüzdesini hesaplayabiliriz.

StormEvents
| where (InjuriesDirect > 0) and (InjuriesIndirect > 0) 
| extend Percentage = (  100 * InjuriesDirect / (InjuriesDirect + InjuriesIndirect) )
| project StartTime, InjuriesDirect, InjuriesIndirect, Percentage

Sorgu sıfır sayısı girdilerini kaldırır:

StartTime InjuriesDirect InjuriesIndirect Yüzde
2007-05-01T16:50:00Z 1 1 50
2007-08-10T21:25:00Z 7 2 77
2007-08-23T12:05:00Z 7 22 24
2007-08-23T14:20:00Z 3 2 60
2007-09-10T13:45:00Z 4 1 80
2007-12-06T08:30:00Z 3 3 50
2007-12-08T12:00:00Z 1 1 50

Bir değişkene sonuç atama: Let

Önceki örnekteki sorgu ifadesinin parçalarını ayırmak için izin ver ' i kullanın. Sonuçlar değişmez:

let LightningStorms = 
    StormEvents
    | where EventType == "Lightning";
let AvalancheStorms = 
    StormEvents
    | where EventType == "Avalanche";
LightningStorms 
| join (AvalancheStorms) on State
| distinct State

İpucu

Kusto Explorer 'da sorgunun tamamını yürütmek için sorgunun kısımları arasına boş çizgiler eklemeyin. Herhangi iki deyimin noktalı virgülle ayrılması gerekir.

Sorgudaki çeşitli veritabanlarından verileri birleştirme

Aşağıdaki sorguda Logs tablo, varsayılan veritabanınızda olmalıdır:

Logs | where ...

Farklı bir veritabanındaki bir tabloya erişmek için aşağıdaki sözdizimini kullanın:

database("db").Table

Örneğin, ve Telemetry adlı Diagnostics veritabanlarına sahipseniz ve iki tablodaki bazı verileri ilişkilendirmek istiyorsanız aşağıdaki sorguyu kullanabilirsiniz (varsayılan veritabanınız varsayıldığında Diagnostics ):

Logs | join database("Telemetry").Metrics on Request MachineId | ...

Varsayılan veritabanınız Telemetry ise bu sorguyu kullanın:

union Requests, database("Diagnostics").Logs | ...

Önceki iki sorgu, her iki veritabanının Şu anda bağlı olduğunuz kümede olduğunu varsayar. TelemetryVeritabanı Telemetryadlı bir kümedaysa, ona erişmek için şu sorguyu kullanın:

Logs | join cluster("TelemetryCluster").database("Telemetry").Metrics on Request MachineId | ...

Not

Küme belirtildiğinde, veritabanı zorunludur.

Bir sorgudaki çeşitli veritabanlarından verileri birleştirme hakkında daha fazla bilgi için bkz. çapraz veritabanı sorguları.

Sonraki adımlar

Azure Veri Gezgini sorgu dili hakkında öğrenmenin en iyi yolu, dile yönelik "fikir" almak için bazı temel sorgulara bakmaktan sorumludur. Bu sorgular, Azure Veri Gezgini öğreticisindeki sorgulara benzerdir, ancak Azure Log Analytics çalışma alanındaki ortak tablolardaki verileri kullanır.

Azure portal Log Analytics kullanarak bu sorguları çalıştırın. Log Analytics, günlük sorgularını yazmak için kullanabileceğiniz bir araçtır. Azure Izleyici 'de günlük verilerini kullanın ve günlük sorgu sonuçlarını değerlendirin. Log Analytics hakkında bilgi sahibi değilseniz Log Analytics öğreticisinidoldurun.

Bu öğreticideki tüm sorgular Log Analytics demo ortamınıkullanır. Kendi ortamınızı kullanabilirsiniz, ancak burada kullanılan tablolardan bazıları bulunmayabilir. Tanıtım ortamındaki veriler statik olmadığından, sorgularınızın sonuçları burada gösterilen sonuçlardan biraz farklı olabilir.

Satırları say

Insightsölçümlerini tablosu, VM'ler için Azure izleyici ve kapsayıcılar Için Azure izleyici gibi Öngörüler tarafından toplanan performans verilerini içerir. Tablonun ne kadar büyük olduğunu öğrenmek için, içeriğini, satırları sayan bir işlece yönelttireceğiz.

Sorgu, isteğe bağlı olarak bir veya daha fazla kanal karakteri ve tablosal işleci tarafından izlenen bir veri kaynağıdır (genellikle tablo adıdır). Bu durumda, tablodaki tüm kayıtlar InsightsMetrics döndürülür ve sonra InsightsMetricsgönderilir. countİşleci, sorgudaki son komut olduğundan, sonuçları görüntüler.

InsightsMetrics | count

Çıktı aşağıda verilmiştir:

Count
1.263.191

Boole ifadesine göre filtrele: nerede

AzureActivity tablosunda Azure etkinlik günlüğünden girişler bulunur. Bu, Azure 'da oluşan abonelik düzeyi veya yönetim grubu düzeyindeki olaylar hakkında öngörüler sağlar. Yalnızca Critical belirli bir hafta boyunca girişleri görelim.

WHERE Işleci kusto sorgu dilinde ortaktır. where bir tabloyu, belirli ölçütlerle eşleşen satırlara filtreler. Aşağıdaki örnek birden çok komut kullanır. İlk olarak, sorgu tabloya ait tüm kayıtları alır. Daha sonra, verileri yalnızca zaman aralığındaki kayıtlar için filtreler. Son olarak, bu sonuçları yalnızca düzeyi olan Critical kayıtlar için filtreler.

Not

Sütununu kullanarak TimeGenerated sorgunuzda bir filtre belirtmenin yanı sıra, Log Analytics zaman aralığını belirtebilirsiniz. Daha fazla bilgi için bkz. Azure izleyici 'de günlük sorgusu kapsamı ve zaman aralığı Log Analytics.

AzureActivity
| where TimeGenerated > datetime(10-01-2020) and TimeGenerated < datetime(10-07-2020)
| where Level == 'Critical'

Screenshot that shows the results of the where operator example.

Sütunların bir alt kümesini seçin: Proje

Yalnızca istediğiniz sütunları içerecek şekilde projeyi kullanın. Yukarıdaki örnekte derleme yapmak için çıktıyı belirli sütunlarla sınırlandıralım:

AzureActivity
| where TimeGenerated > datetime(10-01-2020) and TimeGenerated < datetime(10-07-2020)
| where Level == 'Critical'
| project TimeGenerated, Level, OperationNameValue, ResourceGroup, _ResourceId

Screenshot that shows the results of the project operator example.

N satırı göster: Al

Networkmonitoring , Azure sanal ağları için izleme verileri içerir. Bu tabloda 10 rastgele örnek satıra bakmak için Al işlecini kullanalım. Al , bir tablodaki bazı satırları belirli bir sırada gösterir:

NetworkMonitoring
| take 10
| project TimeGenerated, Computer, SourceNetwork, DestinationNetwork, HighLatency, LowLatency

Screenshot that shows the results of the take operator example.

Sıra sonuçları: sıralama, üst

Rastgele kayıtlar yerine, en son beş kaydı zamana göre ilk sıralamaya göre döndürebiliriz:

NetworkMonitoring
| sort by TimeGenerated desc
| take 5
| project TimeGenerated, Computer, SourceNetwork, DestinationNetwork, HighLatency, LowLatency

En üstteki işleci kullanarak bu tam davranışı da alabilirsiniz:

NetworkMonitoring
| top 5 by TimeGenerated desc
| project TimeGenerated, Computer, SourceNetwork, DestinationNetwork, HighLatency, LowLatency

Screenshot that shows the results of the top operator example.

İşlem türetilmiş sütunları: uzat

Genişletme işleci projeyebenzerdir, ancak bunları değiştirmek yerine sütun kümesine ekler. Her iki işleci de her satırdaki bir hesaplamayı temel alan yeni bir sütun oluşturmak için kullanabilirsiniz.

Performans tablosu, Log Analytics aracısını çalıştıran sanal makinelerden toplanan performans verileri içerir.

Perf
| where ObjectName == "LogicalDisk" and CounterName == "Free Megabytes"
| project TimeGenerated, Computer, FreeMegabytes = CounterValue
| extend FreeGigabytes = FreeMegabytes / 1000

Screenshot that shows the results of the extend operator example.

Toplam satır grupları: özetleme

Özetleme işleci, yan tümcelerinde aynı değerlere sahip satırları birlikte gruplandırır. Ardından, her grubu tek bir satırda birleştirmek gibi count bir toplama işlevi kullanır. Bir dizi toplama işlevi mevcuttur. Birkaç toplama işlevini tek bir summarize işleçte kullanarak birkaç hesaplanmış sütun oluşturabilirsiniz.

Securityevent tablosu, izlenen bilgisayarlarda başlatılan oturum açma işlemleri ve süreçler gibi güvenlik olaylarını içerir. Her bilgisayarda her bir düzeyin kaç olay oluştuğunu saymanız gerekir. Bu örnekte, her bilgisayar ve düzey birleşimi için bir satır oluşturulur. Sütun, olay sayısını içerir.

SecurityEvent
| summarize count() by Computer, Level

Screenshot that shows the results of the summarize count operator example.

Skaler değerlere göre özetleme

Sayılar ve saat değerleri gibi skaler değerlere göre toplayabilirsiniz, ancak satırları ayrı veri kümelerine gruplamak için bin () işlevini kullanmanız gerekir. Örneğin, ile TimeGenerated topladıysanız, çoğu zaman değeri için bir satır alırsınız. Değerlerini saat veya gün başına birleştirmek için kullanın bin() .

Insightsölçümlerini tablosu, VM'ler için Azure izleyici ve kapsayıcılar Için Azure izleyici 'deki öngörülere göre düzenlenmiş performans verilerini içerir. Aşağıdaki sorguda birden çok bilgisayar için saatlik ortalama işlemci kullanımı gösterilmektedir:

InsightsMetrics
| where Computer startswith "DC"
| where Namespace  == "Processor" and Name == "UtilizationPercentage"
| summarize avg(Val) by Computer, bin(TimeGenerated, 1h)

Screenshot that shows the results of the avg operator example.

Grafik veya tablo görüntüleme: işleme

Render işleci, sorgunun çıktısının nasıl işleneceğini belirtir. Log Analytics çıktıyı varsayılan olarak tablo olarak işler. Sorguyu çalıştırdıktan sonra farklı grafik türleri seçebilirsiniz. renderİşleci, belirli bir grafik türünün genellikle tercih edildiği sorgulara dahil etmek için kullanışlıdır.

Aşağıdaki örnek tek bir bilgisayar için saatlik ortalama işlemci kullanımını gösterir. Çıktıyı bir timechart olarak işler.

InsightsMetrics
| where Computer == "DC00.NA.contosohotels.com"
| where Namespace  == "Processor" and Name == "UtilizationPercentage"
| summarize avg(Val) by Computer, bin(TimeGenerated, 1h)
| render timechart

Screenshot that shows the results of the render operator example.

Birden çok seri ile çalışma

Bir summarize by yan tümcesinde birden çok değer kullanırsanız, grafik her bir değer kümesi için ayrı bir seriler görüntüler:

InsightsMetrics
| where Computer startswith "DC"
| where Namespace  == "Processor" and Name == "UtilizationPercentage"
| summarize avg(Val) by Computer, bin(TimeGenerated, 1h)
| render timechart

Screenshot that shows the results of the render operator with multiple series example.

İki tablodan veri birleştirin

Tek bir sorgudaki iki tablodan veri almanız gerekiyorsa ne olacak? Tek bir sonuç kümesinde birden çok tablodan satırları birleştirmek için JOIN işlecini kullanabilirsiniz. Her tablonun eşleşen bir değeri olan bir sütunu olması gerekir, bu nedenle birleştirmenin hangi satırları eşleşeceğini anlayabilmesi için.

Vmcomputer , Azure izleyici 'nin, izlediği sanal makinelerle ilgili ayrıntıları depolamak Için VM 'ler için kullandığı bir tablodur. Insightsmetriler , bu sanal makinelerden toplanan performans verilerini içerir. Insightsölçümler ' de toplanan bir değer kullanılabilir bellek, ancak kullanılabilir bellek yüzdesi değil. Yüzdeyi hesaplamak için, her bir sanal makine için fiziksel belleğe ihtiyacımız var. Bu değer içinde VMComputer olur.

Aşağıdaki örnek sorgu bu hesaplamayı gerçekleştirmek için bir JOIN kullanır. Ayrı işleç, ile birlikte kullanılır çünkü Ayrıntılar her bilgisayardan düzenli olarak toplanır. Sonuç olarak, tablo her bilgisayar için birden çok satır içerir. İki tablo, Computer sütunu kullanılarak birleştirilir. Sonuç kümesinde, içindeki değeri Computer içindeki sütununda VMComputer aynı değere Computer sahip olan içindeki InsightsMetrics her satır için her iki tablodan sütun içeren bir satır oluşturulur.

VMComputer
| distinct Computer, PhysicalMemoryMB
| join kind=inner (
    InsightsMetrics
    | where Namespace == "Memory" and Name == "AvailableMB"
    | project TimeGenerated, Computer, AvailableMemoryMB = Val
) on Computer
| project TimeGenerated, Computer, PercentMemory = AvailableMemoryMB / PhysicalMemoryMB * 100

Screenshot that shows the results of the join operator example.

Bir değişkene sonuç atama: Let

Sorguları okumayı ve yönetmeyi kolaylaştırmak için izin ver ' i kullanın. Bu işleci, bir sorgunun sonuçlarını daha sonra kullanabileceğiniz bir değişkene atamak için kullanabilirsiniz. İfadesini kullanarak let , önceki örnekteki sorgu şu şekilde yeniden yazılabilir:

let PhysicalComputer = VMComputer
    | distinct Computer, PhysicalMemoryMB;
let AvailableMemory = InsightsMetrics
    | where Namespace == "Memory" and Name == "AvailableMB"
    | project TimeGenerated, Computer, AvailableMemoryMB = Val;
PhysicalComputer
| join kind=inner (AvailableMemory) on Computer
| project TimeGenerated, Computer, PercentMemory = AvailableMemoryMB / PhysicalMemoryMB * 100

Screenshot that shows the results of the let operator example.

Sonraki adımlar