Dinamik veri türü
Ş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
string
değerleri değerleredynamic
eşleyen özellik paketi. Özellik paketi, benzersizstring
değ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: , , , , , ,
real
,string
vetimespan
.long
int
guid
datetime
bool
- Sıfır. Daha fazla bilgi için bkz . Null değerler.
Not
- Tür
dynamic
değerleri sıkıştırılmamış 1 MB (2^20) ile sınırlıdır. Bir kayıttaki hücre değeri 1 MB'ı aşarsa, değer bırakılır ve alım başarılı olur. Kodlama ilkesini değiştirerek sütunun sayısını artırabilirsinizMaxValueSize
. - Tür JSON benzeri görünse
dynamic
de JSON modelinin temsil etmediği değerleri tutabilir çünkü JSON'da mevcut değildir (örneğinlong
, ,real
,datetime
,timespan
veguid
). Bu nedenle, değerleri bir JSON gösterimine seri hale getirmededynamic
, JSON'un gösteremdiği değerler değerler halindestring
serileş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, ,real
,long
veguid
türleri içindatetime
geç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
string
temsil edildiğinde farklı sonuçlar elde etmesi tamamen mümkündür.
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( value) |
İç 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
dynamic
değ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ğer in dizisi |
== değerine sahip bir dizi öğesi varsa True where City in ('London', 'Paris', 'Rome') |
değer !in dizisi |
== 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( source) |
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, , , timespan
, real
, long
, guid
, bool
ve dynamic
türlerine datetime
sahip 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ı dizisiparse_json('{"name":"Alan", "age":21, "address":{"street":432,"postcode":"JLK32P"}}')
- sözlükparse_json('21')
- sayı içeren dinamik türün tek bir değeriparse_json('"21"')
- dize içeren dinamik türün tek bir değeriparse_json('{"a":123, "b":"hello", "c":[1,2,3], "d":{}}')
- yukarıdaki örnektekiyle aynı değerio
verir.
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ı datetime
sıra) tutan bir dynamic
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.