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
dynamic Skaler veri türü aşağıdaki değerlerden herhangi biri olabilir:
- Sıfır tabanlı dizin oluşturma ile sıfır veya daha fazla değer tutan bir değer dizisi
dynamic. - Benzersiz
stringdeğerleri değerleredynamiceşleyen özellik paketi. Özellik paketi, benzersizstringdeğerler tarafından dizine alınan sıfır veya daha fazla eşlemeye ("yuvalar" denir) sahiptir. Yuvalar sıralanmamış. - İlkel skaler veri türlerinden herhangi birinin değeri: , , , , , ,
bool,datetimeveguid.intlongrealstringtimespan - Sıfır. Daha fazla bilgi için bkz . Null değerler.
Not
- Tür JSON benzeri görünse
dynamicde JSON modelinin temsil etmediği değerleri tutabilir çünkü JSON'da mevcut değildir (örneğinlong, ,real,datetime,timespanveguid). Bu nedenle, değerleri bir JSON gösterimine seri hale getirmededynamic, JSON'un gösteremdiği değerler değerler halindestringserileştirilir. Buna karşılık Kusto, dizeleri bu şekilde ayrıştırılabiliyorsa kesin olarak türlenmiş değerler olarak ayrıştıracaktır. Bu, ,datetime,realvelongtürleri içinguidgeçerlidir. JSON nesne modeli hakkında daha fazla bilgi için bkz . json.org. - Kusto, bir özellik paketinde addan değere eşlemelerin sırasını korumaya çalışmaz ve bu nedenle korunacak sırayı varsayamazsınız. Aynı eşleme kümesine sahip iki özellik torbasının, örneğin değer olarak
stringtemsil edildiğinde farklı sonuçlar elde etmesi tamamen mümkündür. - Veri alırken, veri türlerinin
dynamicdeğerleri varsayılan olarak sıkıştırılmamış 1 MiB (2^20) ile sınırlıdır. 32 MiB'a kadar değerlere izin vermek içinMaxValueSizedeğiştirerek sütunun değerini artırabilirsiniz.
Dinamik değişmez değerler
Değişmez değer dynamic belirtmek için aşağıdaki söz dizimi seçeneklerinden birini kullanın:
| Sözdizimi | Açıklama | Örnek |
|---|---|---|
dynamic([
değer [, ...]]) |
Dinamik veya diğer skaler değişmez değerlerden oluşan bir dizi. | dynamic([1, 2, "hello"]) |
dynamic({
anahtar=değeri [, ...]}) |
Özellik paketi veya nesne. Bir anahtarın değeri iç içe bir özellik paketi olabilir. | dynamic({"a":1, "b":{"a":2}}) |
dynamic(
değer) |
İç skaler veri türünün değerini tutan dinamik bir değer. | dynamic(4) |
dynamic(null) |
Null değeri temsil eder. |
Söz dizimi kuralları hakkında daha fazla bilgi edinin.
Dinamik nesne erişimcileri
Bir sözlüğü alt simge olarak kullanmak için noktalı gösterimi (dict.key) veya köşeli ayraç gösterimini (dict["key"] ) kullanın. Alt simge bir dize sabiti olduğunda, her iki seçenek de eşdeğerdir.
Not
Bir ifadeyi alt simge olarak kullanmak için köşeli ayraç gösterimini kullanın. Aritmetik ifadeler kullanılırken köşeli ayraçların içindeki ifade parantez içinde sarmalanmalıdır.
Aşağıdaki dict örneklerde ve arr dinamik türdeki sütunlar verilmiştir:
| Expression | Erişimci ifade türü | Anlamı | Açıklamalar |
|---|---|---|---|
| dict[col] | Varlık adı (sütun) | Sütunun col değerlerini anahtar olarak kullanarak bir sözlüğü alt simgeletir |
Sütun dize türünde olmalıdır |
| arr[index] | Varlık dizini (sütun) | Sütunun değerlerini dizin olarak kullanarak bir diziyi index alt indisler |
Sütun tamsayı veya boole türünde olmalıdır |
| arr[-index] | Varlık dizini (sütun) | Dizinin sonundan 'index'-th değerini alır | Sütun tamsayı veya boole türünde olmalıdır |
| arr[(-1)] | Varlık dizini | Dizideki son değeri alır | |
| arr[toint(indexAsString)] | İşlev çağrısı | Sütun indexAsString değerlerini int'e dönüştürür ve bunları kullanarak bir diziyi alt simgeler |
|
| dict[['where']] | Varlık adı (sütun) olarak kullanılan anahtar sözcük | Anahtar olarak sütun where değerlerini kullanarak bir sözlüğü alt simgeletir |
Bazı sorgu dili anahtar sözcükleriyle aynı varlık adları tırnak içine alınmalıdır |
| dict.['where'] veya dict['where'] | Sabit | Dizeyi anahtar olarak kullanarak where sözlüğü alt simge olarak ekler |
İpucu
Mümkün olduğunda sabit alt indisler kullanmanızı öneririz.
Bir değerin alt nesnesine dynamic erişmek, alt nesnenin farklı bir temel türü olsa bile başka dynamic bir değer verir. değerin gettype gerçek temel türünü bulmak için işlevini ve aşağıda listelenen cast işlevlerinden herhangi birini kullanarak gerçek türe dönüştürebilirsiniz.
Dinamik nesneleri atama
Dinamik bir nesneyi alt simgeledikten sonra değeri basit bir türe dönüştürmeniz gerekir.
| Expression | Değer | Tür |
|---|---|---|
| X | parse_json('[100.101.102]') | dizi |
| X[0] | parse_json('100') | dynamic |
| toint(X[1]) | 101 | int |
| Y | parse_json('{"a1":100, "a b c":"2015-01-01"}') | sözlük |
| Y.a1 | parse_json('100') | dynamic |
| Y["a b c"] | parse_json("2015-01-01") | dynamic |
| todate(Y["a b c"]) | datetime(2015-01-01) | datetime |
Atama işlevleri şunlardır:
tolong()todouble()todatetime()totimespan()tostring()toguid()parse_json()
Dinamik nesneler oluşturma
Çeşitli işlevler yeni dynamic nesneler oluşturmanıza olanak tanır:
- bag_pack() ad/değer çiftlerinden bir özellik paketi oluşturur.
- pack_array() değer listesinden bir dizi oluşturur (sütun listesi olabilir; her satır için belirtilen sütunlardan bir dizi oluşturur).
- range() , aritmetik bir sayı serisine sahip bir dizi oluşturur.
- zip() iki diziden "paralel" değerleri tek bir dizide eşleştirir.
- repeat() yinelenen değere sahip bir dizi oluşturur.
Ayrıca, toplanan değerleri tutmak için diziler oluşturan dynamic birkaç toplama işlevi vardır:
-
buildschema() birden çok
dynamicdeğerin toplam şemasını döndürür. - make_bag(), grup içindeki dinamik değerlerden oluşan bir özellik paketi döndürür.
- make_bag_if(), grup içinde dinamik değerlerden oluşan bir özellik paketi döndürür (bir koşulla).
- make_list() tüm değerleri sıralı olarak tutan bir dizi döndürür.
- make_list_if() , tüm değerleri sıralı olarak (koşul ile) tutan bir dizi döndürür.
- make_list_with_nulls() , null değerler de dahil olmak üzere tüm değerleri sıralı olarak tutan bir dizi döndürür.
- make_set() tüm benzersiz değerleri içeren bir dizi döndürür.
- make_set_if() tüm benzersiz değerleri (bir koşulla) tutan bir dizi döndürür.
Dinamik türler üzerinde işleçler ve işlevler
Skaler dinamik/dizi işlevlerinin tam listesi için bkz . dinamik/dizi işlevleri.
| İşleç veya işlev | Dinamik veri türleriyle kullanım |
|---|---|
değerindizisi |
== değerine sahip bir dizi öğesi varsa True where City in ('London', 'Paris', 'Rome') |
değer!indizisi |
== değerine sahip bir dizi öğesi yoksa True |
array_length(dizi) |
Bir dizi değilse null |
bag_has_key(çanta,anahtarı) |
Dinamik torba sütunlarının belirli bir anahtar içerip içermediğini denetler. |
bag_keys(çanta) |
Dinamik özellik paketi nesnesindeki tüm kök anahtarları numaralandırır. |
bag_merge(bag1,...,bagN) |
Dinamik özellik torbalarını, tüm özellikler birleştirilmiş dinamik özellik paketinde birleştirir. |
bag_set_key(çanta,anahtar,değer) |
Verilen anahtarı dinamik özellik paketindeki belirli bir değere ayarlar. |
extract_json(yol,nesne), extract_json(yol,nesne) |
Nesneye gitmek için yolu kullanın. |
parse_json(kaynak) |
JSON dizesini dinamik bir nesneye dönüştürür. |
range(from,to,step) |
Bir değer dizisi. |
mv-expand listColumn |
Belirtilen hücredeki listedeki her değer için bir satır çoğaltır. |
summarize buildschema(sütun) |
Tür şemasını sütun içeriğinden çıkarsar. |
summarize make_bag(sütun) |
Sütundaki özellik paketi (sözlük) değerlerini anahtar yinelemesi olmadan tek bir özellik paketinde birleştirir. |
summarize make_bag_if(sütun,koşul) |
Sütundaki özellik paketi (sözlük) değerlerini anahtar yinelemesi olmadan (koşul ile) tek bir özellik paketinde birleştirir. |
summarize make_list(sütun) |
Satır gruplarını düzleştirme ve sütunun değerlerini bir diziye yerleştirir. |
summarize make_list_if(sütun,koşul) |
Satır gruplarını düzleştirir ve sütunun değerlerini bir diziye yerleştirir (koşul ile). |
summarize make_list_with_nulls(sütun) |
Satır gruplarını düz hale getirir ve sütun değerlerini null değerler de dahil olmak üzere bir diziye yerleştirir. |
summarize make_set(sütun) |
Satır gruplarını düz hale getirir ve sütunun değerlerini yineleme olmadan bir diziye yerleştirir. |
Dinamik veriler için dizin oluşturma
Veri alımı sırasında her alan dizine eklenir. Dizinin kapsamı tek bir veri parçasıdır.
Dinamik sütunları dizine almak için, alma işlemi dinamik değer içindeki tüm "atomik" öğeleri numaralandırır (özellik adları, değerler, dizi öğeleri) ve bunları dizin oluşturucusunun içine iletir. Aksi takdirde, dinamik alanlar dize alanlarıyla aynı ters terim dizinine sahiptir.
Örnekler
Dinamik özellik paketi
Aşağıdaki sorgu bir dinamik özellik paketi oluşturur.
print o=dynamic({"a":123, "b":"hello", "c":[1,2,3], "d":{}})
| extend a=o.a, b=o.b, c=o.c, d=o.d
Kolaylık olması için, dynamic sorgu metninin kendisinde görünen değişmez değerler, , , datetime, timespan, real, long, guidve booltürlerine dynamicsahip diğer Kusto değişmez değerlerini de içerebilir.
Dizeleri ayrıştırırken (işlevi kullanırken parse_json veya veri alırken gibi) JSON üzerinden bu uzantı kullanılamaz, ancak aşağıdakileri yapmanızı sağlar:
print d=dynamic({"a": datetime(1970-05-11)})
JSON kodlama kurallarını izleyen bir string değeri bir dynamic değere ayrıştırmak için işlevini kullanın parse_json . Örneğin:
-
parse_json('[43, 21, 65]')- bir sayı dizisi -
parse_json('{"name":"Alan", "age":21, "address":{"street":432,"postcode":"JLK32P"}}')- sözlük -
parse_json('21')- sayı içeren dinamik türün tek bir değeri -
parse_json('"21"')- dize içeren dinamik türün tek bir değeri -
parse_json('{"a":123, "b":"hello", "c":[1,2,3], "d":{}}')- yukarıdaki örnektekiyle aynı değerioverir.
Not
JavaScript'in aksine JSON, dizeler ve özellik paketi özellik adlarının çevresinde çift tırnak (") karakterlerin kullanılmasını gerektirir. Bu nedenle, tek tırnak (') karakteri kullanarak JSON ile kodlanmış bir dize değişmez değerini tırnak içine almak genellikle daha kolaydır.
Dinamik sütunlara veri alma
Aşağıdaki örnek, bir sütunu (sütunun yanı dynamic sıra) tutan bir datetime tabloyu nasıl tanımlayabileceğinizi ve ardından tek bir kaydı bu tabloya nasıl alabileceğinizi gösterir. Ayrıca CSV dosyalarında JSON dizelerini nasıl kodlayabileceğiniz de gösterilmektedir.
// dynamic is just like any other type:
.create table Logs (Timestamp:datetime, Trace:dynamic)
// Everything between the "[" and "]" is parsed as a CSV line would be:
// 1. Since the JSON string includes double-quotes and commas (two characters
// that have a special meaning in CSV), we must CSV-quote the entire second field.
// 2. CSV-quoting means adding double-quotes (") at the immediate beginning and end
// of the field (no spaces allowed before the first double-quote or after the second
// double-quote!)
// 3. CSV-quoting also means doubling-up every instance of a double-quotes within
// the contents.
.ingest inline into table Logs
[2015-01-01,"{""EventType"":""Demo"", ""EventValue"":""Double-quote love!""}"]
Çıktı
| Zaman damgası | İzleme |
|---|---|
| 2015-01-01 00:00:00.0000000 | {"EventType":"Demo","EventValue":"Çift tırnak sevgisi!"} |
İlgili içerik
- Dinamik nesneleri ve nesne erişimcilerini kullanarak sorgulama örneği için bkz . Değerleri bir kümeden diğerine eşleme.