Yapılandırılmış dize verilerinden veri ayıklama

Tamamlandı

Dize alanları JSON veya Anahtar-Değer çiftleri gibi yapılandırılmış veriler de içerebilir. KQL, daha fazla analiz için bu değerlere kolay erişim sağlar.

Dinamik Alanlar

Log Analytics tablosunda Dinamik olarak tanımlanan alan türleri vardır. Dinamik alanlar şunlar gibi bir anahtar-değer çifti içerir:

{"eventCategory":"Autoscale","eventName":"GetOperationStatusResult","operationId":"xxxxxxxx-6a53-4aed-bab4-575642a10226","eventProperties":"{\"OldInstancesCount\":6,\"NewInstancesCount\":5}","eventDataId":" xxxxxxxx -efe3-43c2-8c86-cd84f70039d3","eventSubmissionTimestamp":"2020-11-30T04:06:17.0503722Z","resource":"ch-appfevmss-pri","resourceGroup":"CH-RETAILRG-PRI","resourceProviderValue":"MICROSOFT.COMPUTE","subscriptionId":" xxxxxxxx -7fde-4caf-8629-41dc15e3b352","activityStatusValue":"Succeeded"}

Dinamik alan içindeki dizelere erişmek için nokta gösterimini kullanın. SigninLogs tablosundaki DeviceDetail alanı dinamik türündedir. Bu örnekte, DeviceDetail.operatingSystem alan adıyla İşletim Sistemine erişebilirsiniz.

SigninLogs 
| extend OS = DeviceDetail.operatingSystem

Aşağıdaki sorgu örneği, SigninLogs tablosuyla Dinamik alanların kullanımını gösterir.

// Example query for SigninLogs showing how to break out packed fields.

SigninLogs 
| extend OS = DeviceDetail.operatingSystem, Browser = DeviceDetail.browser 
| extend StatusCode = tostring(Status.errorCode), StatusDetails = tostring(Status.additionalDetails) 
| extend Date = startofday(TimeGenerated) 
| summarize count() by Date, Identity, UserDisplayName, UserPrincipalName, IPAddress, ResultType, ResultDescription, StatusCode, StatusDetails 
| sort by Date

JSON

KQL, dize alanlarında depolanan JSON'ı işlemek için işlevler sağlar. Birçok günlük JSON biçiminde veri gönderir. Bu, JSON verilerini sorgulanabilir alanlara dönüştürmeyi öğrenmenizi gerektirir.

Aşağıdaki örnek, JSON ile ilgili işlevlerin ve işleçlerin listesidir.

İşlev Açıklama
parse-json() veya todynamic() Dizeyi JSON değeri olarak yorumlar ve değeri dinamik olarak döndürür. Bir alana başvurmak için şu işlevlerden birini kullanın: JsonField.Key veya JsonField["Key"]
mv-expand , koleksiyondaki her değerin ayrı bir satır alması için dinamik türe sahip bir diziye veya özellik paketi sütununa uygulanır. Genişletilmiş satırdaki diğer tüm sütunlar yinelenir. mv_expand, JSON dizilerini işlemenin en kolay yoludur.
mv-apply Her kayda bir alt sorgu uygular ve tüm alt sorguların sonuçlarının birleşimini döndürür. Dizideki her değere bir sorgu uygulayın.

Sonuçları görmek için her sorguyu ayrı ayrı çalıştırın.

SigninLogs 
| extend AuthDetails =  parse_json(AuthenticationDetails) 
| extend AuthMethod =  AuthDetails[0].authenticationMethod 
| extend AuthResult = AuthDetails[0].["authenticationStepResultDetail"] 
| project AuthMethod, AuthResult, AuthDetails 


SigninLogs 
| mv-expand AuthDetails = parse_json(AuthenticationDetails) 
| project AuthDetails

SigninLogs 
| mv-apply AuthDetails = parse_json(AuthenticationDetails) on
(where AuthDetails.authenticationMethod == "Password")