1. Nesil sorgu söz diziminde Azure Time Series Insights
Dikkat
Bu bir Gen1 makalesi.
Bu makalede, Azure Time Series Insights 1. Nesil Sorgu API'sinin sorgu isteği biçimi ve söz dizimi açıklanmaktadır.
Özet
Önemli
- Sorgu istekleri JSON biçiminde olmalıdır.
- Sorgu API'sine yapılan HTTP isteği yükleri bu makalede belirtilen biçime uygun olmalıdır.
Dil aşağıdaki öğelere ayrılmıştır:
- Skaler değerler üreten skaler ifadeler. Skaler ifadeler koşul dizesi ifadelerini, karşılaştırma ifadelerini ve aritmetik ifadeleri içerir.
- Skaler değerler döndüren skaler işlevler.
- Olaylar ve işlem ölçüleri koleksiyonlarını bölümlere bölmek için kullanılan toplama ifadeleri.
- JSON sorgularının bileşen bileşenlerini veya bir ifadenin bir bölümünü oluşturan yan tümceler.
Veri modeli
Azure Time Series Insights 1. Nesil Sorgu API'si, bir ortamda tek tek olaylar olarak depolanan veriler üzerinde çalışır. Her olay bir özellik adı ve değer çiftleri kümesidir.
Olay özellikleri
Olay özellikleri şu temel türlerden biri olabilir: Bool, DateTime, Double veya String. Tüm ilkel türler null atanabilir.
Not
Özelleştirilmiş olay kaynağı biçimleri daha büyük bir değer türleri kümesini destekleyebilebilir. Azure Time Series Insights 1. Nesil, en yakın ilkel türü çıkarsar ve girişte özelleştirilmiş türleri bu türlere atar.
Tüm olaylar, önceden tanımlanmış bir ad ve türe sahip aşağıdaki yerleşik özelliklere sahiptir:
Özellik adı | Özellik türü | Tanım |
---|---|---|
$ts | Tarih Saat | Olay zaman damgası |
$esn | Dize | Olay kaynağı adı |
Olay zaman damgası
Varsayılan olarak, olay kaynağı tarafından bir olay zaman damgası değeri sağlanır. Örneğin, bir IoT hub'ından gelen olayların zaman damgası olarak sıralanmış zamanları olabilir.
Müşteriler bunun yerine başka bir olay özelliği yapılandırarak bu davranışı değiştirebilir. Olay hub'larında ve IoT hub'larında özel zaman damgası özellikleri belirtilebilir.
Olay kaynağı adı
Olay kaynağı adı, Azure Time Series Insights 1. Nesil'in olayı aldığı olay kaynağı için görüntülenen addır. Olay kaynağı adları, giriş zamanında belirli bir olayla ilişkilendirilir.
Önemli
- Olay kaynağı adları, olayın ömrü boyunca değişmeden kalır.
- Olay kaynağının adı değiştirilirse, mevcut olaylar eski olay kaynağı adını taşır. Yeni olaylar yeni olay kaynağı adını taşır.
Olay türleri
Özel olay özellikleri, sorgu ifadelerinde ad ve türe göre benzersiz olarak tanımlanır ve başvurulur. Bir olayın aynı ada ve farklı türlere sahip birden fazla özelliği olabilir. Aynı ada ancak farklı türlere sahip özellikler giriş türünün bölünmesinden kaynaklanabilir.
Dize türünde bir olay özelliği değeri, aşağıdaki durumlarda farklı türde bir özellik olarak depolanabilir:
- Dize değeri geçerli bir Double değeriyse, hem Double hem de String olarak depolanır.
- Dize değeri geçerli bir DateTime değeriyse, yalnızca DateTime olarak depolanır.
Sorgu API'si, çıktıdaki boş Dize değişmez değerlerini (""
) değerine null
dönüştürür.
Azure Time Series Insights 1. Nesil, Double türündeki şu değerler için sınırlı desteğe sahiptir: Double.NaN
, Double.PositiveInfinity
ve Double.NegativeInfinity
.
Bu değerler giriş sırasında değerine null
dönüştürülür, ancak sorgu değerlendirmesi bu değerlerden birini üretirse değer değerlendirilir ve yanıt olarak Dize olarak serileştirilir.
Bu değerleri giriş için Dizeler olarak geçirebilirsiniz, bu nedenle sorgu ifadelerinde bu değerler de Dize olarak geçirilmelidir.
Olay şemaları bir olayın özelliklerini açıklar. Olay şeması, olay kaynağının adını ve olay için sıralı özellik kümesini içerir. Farklı olaylar farklı şemalara sahip olabilir veya aynı şemayı paylaşabilir.
Skaler ifadeler
Skaler ifadeler skaler değerler üretir. Skaler ifadeler aşağıdaki türlere ayrılır:
- Sabit ifadeler
- Özellik başvuru ifadeleri
- Karşılaştırma ifadeleri
- Aritmetik ifadeler
- Koşul dizesi ifadeleri
Sabit ifadeler
Temel türlerin her biri için aşağıdaki değişmez değerleri kullanarak sabit ifadeleri temsil eder:
Temel tür | JSON gösterimi | JSON örneği | Notlar |
---|---|---|---|
Bool | JSON Boole türü olarak |
true , false |
|
Tarih Saat |
ISO 8601 biçiminde yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK tek dateTime özelliğine sahip iç içe nesne olarak. |
{"dateTime":"2016-08-01T00:00:00.000Z"} |
|
Çift | Çift aralığına bir JSON numarası ataması. |
1.23e45 , 123 |
Çift taşmalar hata oluşturur. |
Dize | JSON dize türü | "abc" |
|
TimeSpan |
ISO 8601 biçiminde tek timeSpan özelliğine sahip iç içe nesne olarak: P[n]Y[n]M[n]DT[n]H[n]M[n]S . |
{"timeSpan":"P1Y2M3DT4M5.67S"} |
Null atanabilir temel türler
Temel veri türleri null atanabilir.
null
temel türler için değerler JSON ile aşağıdaki gibi ifade edilir:
{ "string": null }
{ "double": null }
{ "bool": null }
{ "dateTime": null }
{ "timeSpan": null }
Özellik başvuru ifadeleri
Bir olayın yerleşik olmayan özelliklerinin değerlerine erişmek için özellik başvuru ifadesi kullanırsınız. Yerleşik olmayan özellikler, bir olay şemasında otomatik olarak yer alan varsayılan özelliklerin ötesindeki özelleştirilmiş özellikleri içerir.
Özellik başvuru ifadesinin sonuç türü özelliğin ilkel türüdür. Olay şemasındaki özellikler ad ve türe göre benzersiz olarak tanımlanır ve başvuru ifadesinin her ikisinin de belirtilmesi gerekir.
JSON örnekleri:
{ "property": "p1", "type": "Bool" }
{ "property": "p1", "type": "DateTime" }
{ "property": "p1", "type": "Double" }
{ "property": "p1", "type": "String" }
{ "property": "p1", "type": "TimeSpan" }
Bir olayın yerleşik özelliklerine erişmek için yerleşik özellik başvuru ifadesi kullanılır. Yerleşik özellikler yalnızca bir olay şemasında otomatik olarak tanımlanan özelliklerdir.
Yerleşik özellik başvuru ifadesinin sonuç türü, özelliğin temel türüdür. Yerleşik özelliklere yalnızca adla başvurulur; bu nedenle, başvuru ifadesinde tür gerekmez:
{ "builtInProperty": "$esn" }
Karşılaştırma ifadeleri
Aşağıdaki Boole karşılaştırma ifadeleri desteklenir:
JSON'da özellik adı | Description |
---|---|
eq | Eşittir |
Inç | içinde (herhangi birine eşit) |
Ifa -de | tümcecik içerir |
Startswith | İle başlar |
Endswith | Tümcecikle biter |
Regex | Normal ifadeyle eşleşir |
lt | Küçüktür |
Lte | Küçüktür veya eşittir |
gt | Büyüktür |
Gte | Büyüktür veya eşittir |
Önemli
- Tüm karşılaştırma ifadeleri hem sol hem de sağ bağımsız değişkenlerin temel türlerini alır ve karşılaştırmanın sonucunu temsil eden bir Boole değeri döndürür.
- Karşılaştırmalardaki sol ve sağ bağımsız değişkenlerin her ikisi de eşleşmelidir.
- Tüm türler yalnızca kendilerine örtük olarak atılır ve açık atamalar desteklenmez.
{
"eq": {
"left": {
"property": "p1",
"type": "String"
},
"right": "abc"
}
}
JSON örnekleri:
{ "startsWith": { "left": { "property": "p1", "type": "String" }, "right": "abc" } }
{ "startsWith": { "left": { "property": "p1", "type": "String" }, "right": "", "stringComparison": "Ordinal" } }
{ "endsWith": { "left": { "property": "p1", "type": "String" }, "right": { "property": "p2", "type": "String" }, "stringComparison": "Ordinal" } }
Aşağıdaki tabloda, karşılaştırma ifadelerinin her biri için desteklenen bağımsız değişken türleri gösterilmektedir:
Bağımsız değişken türü | Desteklenen karşılaştırma işlemi |
---|---|
Bool | eq, in |
Tarih Saat | eq, in, lt, lte, gt, gte |
Çift | eq, in, lt, lte, gt, gte |
Dize | eq, in, phrase, startsWith, endsWith, regex |
TimeSpan | eq, in, lt, lte, gt, gte |
NULL değişmez değeri yalnızca şu karşılaştırma işleçleriyle kullanılabilir: eq veya in.
- her iki taraf da
true
değerse eq işleci sonuç verirnull
. Aksi takdirde işleç ile sonuç verirfalse
. - Diğer işlemler için, hata NULL değişmez değeri için oluşturulur ve null değer özellikleri (ile sonuçlanan
false
herhangi bir karşılaştırma işlemi) için davranış tanımlanmamıştır. - Bir
null
değer, sıralama düzenlerinde null olmayan değerlerin önüne gelir (örneğin, olay listesini döndürmek için bir özelliğe göre sıralama uygulanırsa).
Azure Time Series Insights 1. Nesil aşağıdaki Boole mantıksal ifadelerini destekler:
JSON'da özellik adı | Description |
---|---|
and | Boş olmayan bir Boole bağımsız değişken kümesi alır ve tümü olarak değerlendirilirse true döndürürtrue . |
Veya | Boş olmayan bir Boole bağımsız değişken kümesi alır ve bunlardan herhangi biri olarak değerlendirilirse true döndürürtrue . |
Değil | Tek bir Boole bağımsız değişkeni alır ve negatif değerini döndürür. |
{
"and": [
{
"eq": {
"left": {
"property": "p1",
"type": "String"
},
"right": "abc"
}
},
{
"not": {
"lt": {
"left": {
"property": "p1",
"type": "Double"
},
"right": 1
}
}
}
]
}
stringComparison özelliği isteğe bağlıdır. Varsayılan olarak değeri, karşılaştırmalarda tümce büyük/küçük harflerinin yoksayılmasına neden olan değeridir OrdinalIgnoreCase
.
{
"regex": {
"left": {
"property": "p1",
"type": "String"
},
"right": "^abc*"
}
}
{
"regex": {
"left": "abc",
"right": "^a*$"
}
}
Aritmetik ifadeler
Azure Time Series Insights 1. Nesil aşağıdaki aritmetik ifadeleri destekler:
JSON'da özellik adı | Description |
---|---|
add | Toplama |
Alt | Çıkarma |
Mult | Çarpma |
div | Bölüm |
Tüm aritmetik ifadeler, ilkel türlerin sol ve sağ bağımsız değişkenlerini alır ve işlemin sonucunu temsil eden bir değer döndürür.
Tüm türler yalnızca kendilerine örtük olarak atılır ve açık atamalar desteklenmez.
{
"add": {
"left": {
"property": "p1",
"type": "Double"
},
"right": 1
}
}
Aşağıdaki tabloda, aritmetik ifadelerin her biri için desteklenen bağımsız değişken türleri gösterilmektedir:
İşlem | Sol tür | Sağ tür | Sonuç türü |
---|---|---|---|
add | Çift | Çift | Çift |
add | TimeSpan | TimeSpan | TimeSpan |
add | Tarih Saat | TimeSpan | Tarih Saat |
add | TimeSpan | Tarih Saat | Tarih Saat |
Alt | Çift | Çift | Çift |
Alt | TimeSpan | TimeSpan | TimeSpan |
Alt | Tarih Saat | Tarih Saat | TimeSpan |
Alt | Tarih Saat | TimeSpan | Tarih Saat |
Mul | Çift | Çift | Çift |
div | Çift | Çift | Çift |
Koşul dizesi ifadeleri
Boole koşulu dize ifadeleri, koşul dizeleri olarak adlandırılan insan tarafından okunabilir ifadeler olarak temsil edilen Boole koşullarını içerir.
Koşul dizeleri örnekleri:
Koşul dizesi | Description |
---|---|
Description HAS 'hello world' |
true Tüm olay kaynaklarında Description özelliğinde tümceciği hello world içeren olaylar için |
'hello world' |
true tümceciği içeren olaylar için hello world |
startsWith(Status, 'go') |
true
ile başlayan Durumlu olaylar içingo |
endsWith(Status, 'oD') |
true
Durum ile biten olaylar içinod |
startsWith_cs(Status, 'Go') |
true
ile başlayan Durumlu olaylar içinGo |
endsWith_cs(Status, 'od') |
true
ile başlayan Durumlu olaylar içinod |
matchesRegex(s, '^G*') |
true Normal ifadeyle eşleşen Durumlu olaylar için ^G* |
PointValue.Double = 3.14 |
true çift PointValue değerine eşit olan olaylar için 3.14 |
Status IN ('Good','Bad') |
true veya içeren Good Durum'a sahip olaylar içinBad |
PointValue > 3.14 AND Status.String = 'Good' |
true
PointValue değerinden 3.14 büyük ve dizesi Status olan olaylar içinGood |
[PointValue] > 3.14 AND ([Status] = 'Good' OR [Status] = 'Bad') AND NOT [Description] HAS 'hello world' |
true
PointValue değerinden 3.14 büyük ve Veya Bad durumundanGood büyük olan olaylar ve tümceciği içermeyen Açıklama içinhello world |
{ "predicateString": "PointValue.Double = 3.14" }
Koşul dizesindeki ifade bir JSON Boole ifadesi olarak değerlendirilir. Aşağıdaki (basitleştirilmiş) dil bilgisi ile uyumlu olmalıdır:
JSON Boole ifadesi | Backus–Naur formu |
---|---|
parse |
orPredicate EOF | EOF; |
orPredicate |
andPredicate (Or andPredicate)*; |
andPredicate |
notPredicate (And notPredicate)*; |
notPredicate |
(Not)* predicate; |
predicate |
parenPredicate | comparisonPredicateExtended | hasPredicate | inPredicate; |
parenPredicate |
OpenParen orPredicate CloseParen; |
parenExpression |
OpenParen additiveExpression CloseParen; |
comparisonPredicateExtended |
(ComparisonOp literal) | comparisonPredicate; |
comparisonPredicate |
additiveExpression ComparisonOp additiveExpression; |
additiveExpression |
multiplicativeExpression ((Plus | Minus) multiplicativeExpression)*; |
multiplicativeExpression |
unaryExpression (MultiplicativeOp unaryExpression)*; |
functionCallExpression |
identifier OpenParen CloseParen; |
unaryExpression |
identifier | literal | functionCallExpression | parenPredicate | parenExpression; |
hasPredicate |
(identifier? Has)? StringLiteral; |
inPredicate |
identifier? In OpenParen literal (Comma literal)* CloseParen; |
literal |
StringLiteral | ((Minus)? NumericLiteral) | BooleanLiteral | DateTimeLiteral | TimeSpanLiteral | NullLiteral; |
identifier |
BuiltinIdentifier | (QuotedOrUnquotedIdentifier (Sep QuotedOrUnquotedIdentifier)?); |
Azure Time Series Insights 1. Nesil temel veri türleri koşul dizesi ifadelerinde desteklenir.
JSON özellik başvuru ifadelerinden farklı olarak, bir özelliğin türü atlanabilir ve bu durumda bir tür otomatik olarak çıkarılır.
Desteklenen değişmez değerler
Temel tür | Değişmez Değerler |
---|---|
Bool |
TRUE , FALSE |
Tarih Saat | dt'2016-10-08T03:22:55.3031599Z' |
Çift |
1.23 , 1.0 |
Dize | 'abc' |
TimeSpan | ts'P1Y2M3DT4M5.67S' |
NULL |
Desteklenen işlenen türleri
İşlem | Desteklenen türler | Notlar |
---|---|---|
<, >, <=, >= | Double, DateTime, TimeSpan | |
=, !=, <> | String, Bool, Double, DateTime, TimeSpan, NULL | <> != için eşdeğerdir |
+, -, *, / | Double, DateTime, TimeSpan | |
INÇ | String, Bool, Double, DateTime, TimeSpan, NULL | Tüm işlenenler aynı türde veya NULL sabiti olmalıdır. Birden çok NULL, tek bir NULL'a eşdeğerdir. |
HSA | Dize | Sağ tarafta yalnızca sabit dize değişmez değerlerine izin verilir. Boş dizeye ve NULL'a izin verilmez. |
Karşılaştırma koşulları için (<, >, <=, >=, =, !=) ve IN koşulu işleneni NULL olabilir veya tek bir türe sahip olabilir.
HAS koşuluna sahip ifadeler için, HAS işleneninin sağ tarafındaki sabit sabit değer birden çok türe genişletilebilir. Ayrıca, HAS işleneninin sağ tarafındaki sabit sabit değer Bool, Double, DateTime veya TimeSpan değerine ayrıştırılır. Başarıyla ayrıştırılan her değer için işleciyle = bir koşul oluşturulur. Bu koşul ve özgün HASkoşulu or koşuluna birleştirilir. Örneğin, Dize veÇift türlerine sahip p1 özellikleri varsa, koşul dizesi p1 HAS '1.0'
ile eşdeğerdirp1.String HAS '1.0' OR p1.Double = 1.0
.
Tür denetimi
Koşul ifadeleri, sağ ve sol taraftaki türlerin eşleştiğinden emin olmak için tür denetiminden geçirilir ve doğrulanır.
Önemli
- Bir işlenenin solundaki ve sağındaki sabitler eşleşmediğinde bir hata oluşur.
- Belirli türler üzerinde veya bunlar arasında bir işleme izin verilmiyorsa da hata oluşur.
Özellik için bir tür belirtilirse, bir tür denetimi uygulanır:
Herhangi bir özellik türü NULL değişmez değerine karşı kabul edilir.
Aksi takdirde, sol taraftaki ve sağ taraftaki türler eşleşmelidir.
Aşağıdaki tabloda, Dize türünün p1 ve p2 özellikleri ile Çift türündeki p3 özelliğinin örnekleri görüntülenir:
Koşul dizesi Geçerli mi? Notlar p1.String = 'abc'
Yes p1.String = p2.String
Yes p1.String = NULL
Yes NULL
herhangi bir sol taraftaki türle eşleşir.p3.Double = 'abc'
No Tür uyuşmazlığı. p3.Double = p1.String
No Tür uyuşmazlığı. p1.String HAS 'abc'
Yes p3.Double HAS '1.0'
Yes Dize değişmez değeri bir Double değerine başarıyla ayrıştırıldı.
Özellik için bir tür atlanırsa ancak bir ad belirtilirse, aşağıdaki adımlar gerçekleştirilir:
- Belirtilen ada ve türe sahip tüm özellikler alınır.
- Sol taraftaki ve sağ taraftaki işlenenler türe göre çiftler halinde gruplandırılır.
- Çiftler AND işlemleri kullanılarak birleştirilir.
Dize ve Çift türlerinin p1 ve p2 özelliklerinin örnekleri ve bunların eşdeğerlerinden bazıları aşağıdaki tabloda görüntülenir:
Koşul dizesi Eşdeğer tanımlayıcı türü belirlenmiş koşul dizesi Notlar p1 = 'abc'
p1.String = 'abc'
p1 = true
Bool türünde p1 özelliği olmadığından eksik özellik hatası gösterilir. p1 = NULL
p1.String = NULL AND p1.Double = NULL
NULL
Sağ tarafta tüm eşleşen özelliklerin olmasıNULL
gerektiği varsayılır.p1 != NULL
p1.String != NULL OR p1.Double != NULL
Bu, önceki ifadenin ters çevrilmesidir. p1 = '1.0'
p1.String = '1.0'
p1 IN (1.0, NULL)
p1.Double = 1.0 OR p1.Double = NULL
p1 IN (NULL)
p1.String = NULL AND p1.Double = NULL
Bu, eşdeğeridir p1 = NULL
.p1 HAS '1.0'
p1.String HAS '1.0' OR p1.Double = 1.0
Dize değişmez değeri, geçerli bir Double değerine başarıyla ayrıştırıldı. p1 HAS 'true'
p1.String HAS 'true'
Dize değişmez değeri Bool'a başarıyla ayrıştırıldı, ancak p1 yok. Bool özelliği var. p1 = p2
p1.String = p2.String AND p1.Double = p2.Double
p1 != p2
p1.String != p2.String OR p1.Double != p2.Double
Bu, önceki ifadenin ters çevrilmesidir.
Sağ taraftaki özellik türü iyi tanımlanmışsa, sol taraftaki özellik için hem özellik adı hem de türü atlanabilir. Sağ taraftaki sabit değişmez değerlere sahip olduğunda ve yalnızca değişmez
NULL
değer içermediğinden bu durum geçerlidir.Bu senaryo, HAS işlenenini kullanan tam metin aramasının genelleştirilmesidir.
Sağ taraftaki türle eşleşen tüm özellikler alınır ve sonuçta elde edilen ifadeler OR işlemiyle birleştirilir.
String ve Double türlerinin p1 özellik örnekleri ile String ve DateTime türlerinin p2 özelliği aşağıdaki tabloda görüntülenir:
Koşul dizesi Eşdeğer güçlü türdeki koşul dizesi Notlar = 'abc'
p1.String = 'abc' OR p2.String = 'abc'
!= 'abc'
p1.String != 'abc' AND p2.String != 'abc'
Önceki ifadenin tersini çevirme = 1.0
p1.Double = 1.0
= dt'2000-01-02T03:04:05'
p2.DateTime = dt'2000-01-02T03:04:05'
= true
Hata. Bool özelliği olmadığından eksik özellik hatası görüntülenir. = NULL
Hata. Sağ taraf için NULL
özellik adının atlanmasına izin verilmez.IN (NULL)
Önceki hatayla aynı. IN (1.0, NULL)
p1.Double = 1.0 OR p1.Double = NULL
HAS '1.0'
p1.String HAS '1.0' OR p1.Double = 1.0 OR p2.String HAS '1.0'
HAS 'true'
p1.String HAS 'true' OR p2.String HAS 'true'
Bool türünde bir özellik yoktur.
işleci bir özellik adıyla birlikte atlanırsa,
HAS
işlem varsayılır.
Skaler işlevler
Skaler işlevler skaler değerler döndürür.
Yerel işlevler
Azure Time Series Insights 1. Nesil tarafından ilk çalıştırmada desteklenen skaler işlevler şunlardır:
İşlev adı | Döndürülen değer | Bağımsız değişkenler | Örnek | Notlar |
---|---|---|---|---|
utcNow | Tarih Saat | Hiçbiri | utcNow() | Geçerli saati UTC biçiminde döndürür. İşlev adı büyük/küçük harfe duyarlıdır. |
UTC şimdi işlevi, geçerli saati UTC biçiminde içeren bir DateTime değeri döndürür. Hiçbir bağımsız değişkeni kabul etmez.
Toplama ifadeleri
Toplama ifadeleri, olay koleksiyonlarını ve işlem ölçülerini bölümlere bölmek için kullanılır. Toplama ifadeleri aşağıdaki türlere ayrılır:
Boyut ifadeleri
Bir dizi olayı bölümleyip her bölüme bir skaler anahtar atamak için bir toplamalar yan tümcesi içinde boyut ifadeleri kullanırsınız.
Boyut ifade türleri:
JSON'da özellik adı | Açıklama | Örnek |
---|---|---|
Uniquevalues | Sonuçtaki boyut değerleri, belirli bir özelliğin tam değerleridir. | |
dateHistogram | Sonuçtaki boyut değerleri, belirli bir özelliğin zaman aralıklarıdır. | Zaman damgasının tarih histogramı, 10 saatlik arama aralığı için 10 1 saatlik aralıklarla sonuçlanabilir. |
numericHistogram | Sonuçtaki boyut değerleri, belirli bir özellikteki değer aralıklarıdır. | Sıcaklığın sayısal histogramı 10 derecelik bir dönüşe neden olabilir. |
Azure Time Series Insights 1. Nesil, giriş toplama sorgusunun maksimum kardinalitesini veya maksimum kafes boyutunu 150.000 hücreyle kısıtlar. Toplama sorgusunun kardinalitesini hesaplamak için sorgudaki tüm boyutların boyutlarını çarpmış olursunuz. Ürün 150.000'den az olduğu sürece sorgu yürütme için kabul edilir. Ürün 150.000 veya daha küçükse sorgu reddedilir.
take yan tümcesini kullanarak uniqueValues ve numericHistogram tarafından üretilen bir boyutun en büyük boyutunu belirtirsiniz. dateHistogram'da boyut, arama aralığı, kesme yan tümcesini kullanarak belirttiğiniz dateHistogram aralığının boyutuna bölünerek hesaplanır.
Örneğin, toplam sorgunun arama aralığı "2017-11-15T16:00:00.000Z" ile "2017-11-15T19:00:00.000Z" = 3 saat olarak ayarlanmıştır. Sorgu, kesme yan tümcesi ile dateHistogram içeriyorsa, XYZ özelliği üzerinde 1 dakika (boyut 1) ve uniqueValues olarak ayarlanırsa, dateHistogram boyut boyutu 3x60=180 olur. Bu sonuç , uniqueValues değerinin toplam 150.000/180 = 833 öğeyi kapsayabileceği anlamına gelir.
Benzersiz değer ifadeleri
Bir olay kümesini belirtilen olay özelliğinin değerlerine göre gruplandırmak için benzersiz değerler ifadesi kullanırsınız.
Bu JSON ifadesinin değerlendirilmesi, String özelliğine göre gruplandırılmış en fazla 100 kayıtla sensorId
sonuçlanır.
{
"uniqueValues": {
"input": {
"property": "sensorId",
"type": "String"
},
"take": 100
}
}
Tarih histogramı ifadeleri
DateTime özellik değerlerini belirtilen boyuttaki demetler halinde gruplandırmak için tarih histogramı ifadesi kullanırsınız.
Bu JSON ifadesinin değerlendirilmesi, her değerin saniyeleri sıfırlanmış olacak şekilde kat yuvarlanmış zaman damgası kayıtları kümesiyle sonuçlanır.
{
"dateHistogram": {
"input": {
"builtInProperty": "$ts"
},
"breaks": {
"size": "1m"
}
}
}
Sayısal histogram ifadeleri
Double özellik değerlerini belirtilen sayıda demet halinde gruplandırmak için sayısal bir histogram ifadesi kullanırsınız.
Bu JSON ifadesinin değerlendirilmesi 10 kayıtla sonuçlanır, bu nedenle p1 özelliğinin en düşük ve en yüksek değerleri arasındaki aralık 10 demete bölünür.
{
"numericHistogram": {
"input": {
"property": "p1",
"type": "Double"
},
"breaks": {
"count": 10
}
}
}
Ölçü ifadeleri
Bir dizi olaydaki skaler değeri hesaplamak için toplama yan tümcelerinin içindeki ölçü ifadelerini kullanırsınız. Örneğin ölçü ifadesi, son 24 saat içinde bir sıcaklık sensörü tarafından ölçülen maksimum değerin hesaplanmasıdır.
Karşılık gelen demet içindeki olayların sayısını hesaplamak için bir count ifadesi kullanırsınız.
{ "count": {} }
İlgili demet içinde belirtilen bir özellik için minimum, maksimum, ortalama ve toplam değerlerini hesaplamak için min, max, avg ve sum ifadelerini kullanırsınız.
{
"min": {
"input": {
"property": "temperature",
"type": "Double"
}
}
}
İlk ve son ölçü ifadeleriyle, B özelliğinin en düşük veya en yüksek değerine karşılık gelen belirtilen A özelliğinin değerini alabilirsiniz.
{
"first": {
"input": {
"property": "propertyA",
"type": "String"
},
"orderBy": {
"property": "propertyB",
"type": "Double"
}
}
}
{
"last": {
"input": {
"property": "propertyA",
"type": "Double"
},
"orderBy": {
"property": "propertyB",
"type": "DateTime"
}
}
}
orderBy yan tümcesi isteğe bağlıdır ve varsayılan olarak Timestamp özelliği $ts. Giriş herhangi bir türde olabilir. orderBy yan tümcesi yalnızca Double ve DateTime türlerini destekler.
B özelliği bir DateTime türüyse, A özelliğinin en son veya en erken değerini alırsınız.
Belirli bir özelliğin en erken veya en son değerini anlamanıza yardımcı olması için ilk ve son ifadeleri kullanabilirsiniz. Örneğin, adlı deviceID
bir özelliğiniz varsa ve bir olayı gönderen en son deviceID
öğeyi anlamak istiyorsanız, son , bu bilgileri tanımlamak için kullanılacak en verimli ifade işlecidir.
{
"last": {
"input": {
"property": "deviceID",
"type": "String"
}
}
}
Bir diğer örnek de son kullanarak belirli bir nesnenin son bildirilen konumunu (gemi, araç veya başka bir hareketli nesne gibi) bulmaktır.
Bir filodaki gemilerin bilinen son konumunu oluşturan bir sorguyu göstermek için aşağıdakine benzer bir sorgu yazabilirsiniz:
{
"searchSpan": {
"from": "2018-05-05T12:00:00.000Z",
"to": "2018-05-15T12:01:00.000Z"
},
"aggregates": [
{
"dimension": {
"uniqueValues": {
"input": {
"property": "shipId",
"type": "string"
},
"take": 150000
}
},
"measures": [
{
"last": {
"input": {
"property": "Latitude",
"type": "Double"
}
}
},
{
"last": {
"input": {
"property": "Longitude",
"type": "Double"
}
}
}
]
}
]
}
Bir diğer örnek de her tesis için en düşük basıncı bildiren bir cihazı bulmak için ilk olarak kullanmaktır:
{
"searchSpan": {
"from": "2018-05-05T12:00:00.000Z",
"to": "2018-05-15T12:01:00.000Z"
},
"aggregates": [
{
"dimension": {
"uniqueValues": {
"input": {
"property": "plantId",
"type": "String"
},
"take": 150000
}
},
"measures": [
{
"first": {
"input": {
"property": "deviceId",
"type": "String"
},
"orderBy": {
"property": "pressure",
"type": "Double"
}
}
}
]
}
]
}
Boyut ve ölçü türü desteği
Özellik türüne göre desteklenen boyut ve ölçü ifadeleri şunlardır:
Özellik türü | Desteklenen boyut ifadeleri | Desteklenen ölçü ifadeleri |
---|---|---|
Bool | "uniqueValues" |
"first" (giriş), "last" (giriş) |
Tarih Saat |
"uniqueValues" , "dateHistogram" |
"min" , "max" , "first" (orderBy, input), "last” (orderBy, input) |
Çift |
"uniqueValues" , "numericHistogram" |
"sum" , "avg" , "min" , "max" , "first" (orderBy, input), "last” (orderBy, input) |
Dize | "uniqueValues" |
"first" (giriş), "last" (giriş) |
Yan tümceler
Yan tümceler , JSON sorgularının bileşen bileşenlerini veya bir ifadenin bir parçasını oluşturur. Yan tümceler aşağıdaki türlere ayrılır:
- Arama yayılma yan tümceleri
- Koşul yan tümceleri
- Üst yan tümceleri sınırla
- Take yan tümcelerini sınırlama
- Örnek yan tümcelerini sınırlama
- Kesme yan tümceleri
- Toplama yan tümceleri
Arama yayılma yan tümceleri
Bir olayın yerleşik Timestamp özelliğini belirli bir zaman aralığına göre filtrelemek için bir arama span yan tümcesi kullanırsınız. Aralığın başlangıcı dahil. Aralığın sonu özeldir.
{
"searchSpan": {
"from": {
"dateTime": "2016-08-01T00:00:00.000Z"
},
"to": {
"dateTime": "2016-08-31T00:00:00.000Z"
}
}
}
Search span yan tümcesindeki (searchSpan) from ve to özellikleri DateTime sonuç türünün geçerli ifadeleri olmalıdır. Bu ifadeler sorgu yürütmeden önce değerlendirilir; başka bir deyişle özellik başvuruları içermemeleri gerekir.
Koşul yan tümceleri
Koşulu karşılayan olayları filtrelemek için koşul yan tümcesi kullanırsınız. Bir Boole ifadesi olarak çözümlenmelidir.
{
"predicate": {
"eq": {
"left": {
"property": "p1",
"type": "String"
},
"right": "abc"
}
}
}
Olayları filtrelemek, ortamdaki her olayda boole ifadesiyle temsil edilen bir koşulu çalıştırmak anlamına gelir. Bir olaydaki bir ifadenin yürütülmesi, olayın başka işlemlere eklenmesi gerekiyorsa döndürür true
. Olayın daha fazla işlemeden atlanması gerekiyorsa döndürür false
.
Not
Olaylar, koşul ifadesinde belirtilen filtrelemeye ek olarak her zaman arama aralığına göre filtrelenir.
Üst yan tümceleri sınırla
Belirtilen sayıda değeri artan veya azalan sırada almak için *limit top yan tümcesi kullanırsınız. Belirtilen sayıya göre değer sayısı sınırlıdır.
{
"sort": [
{
"input": {
"builtInProperty": "$ts"
},
"order": "Asc"
}
],
"count": 10
}
Take yan tümcelerini sınırlama
Belirli bir sırada değer kümesi almak için hızlı bir yol olarak limit take yan tümcesini kullanabilirsiniz. Döndürülen değerlerin sayısı belirtilen girişle sınırlıdır.
{ "take": 10 }
Örnek yan tümcelerini sınırlama
Bir değer kümesinden istatistiksel olarak temsili bir örnek almak için *limit sample yan tümcesi kullanırsınız. Döndürülen değerlerin sayısı belirtilen girişle sınırlıdır.
{ "sample": 10 }
Kesme yan tümceleri
Aralığın nasıl bölüneceğini belirtmek için histogram ifadelerinde *breaks yan tümcesi kullanırsınız.
Tarih histogramları için tarih saat aralığının ve aralık sınırlarının boyutunu belirtmeniz gerekir. Histogram, sınırların arama aralığına göre belirlendiği yerleşik bir Timestamp özelliğini temel almadığı sürece bunu yaparsınız:
- Aralık sınırları isteğe bağlıdır ve kullanılabilir. Örneğin, aralık sınırları atlanırsa bir arama aralığına göre belirlendiklerinde bunları kullanabilirsiniz.
- Sayısal histogramlar için kesme sayısını belirtmeniz gerekir. Bir özelliğin en düşük ve en yüksek değerlerine göre aralık sınırlarını belirlersiniz.
{
"breaks": {
"size": "1d",
"from": "2000-01-02T03:04:05.0000000",
"to": "2000-01-02T03:04:05.0000000"
}
}
{
"breaks": {
"count": 10
}
}
Toplama yan tümceleri
Diğer olay özelliklerinin değerlerini ölçerken bir dizi olayı belirli bir özelliğe göre bölümlendirmek için bir aggregates yan tümcesi kullanırsınız.
Ölçüler, boyut ifadesi tarafından üretilen her bölümde değerlendirilir.
Aşağıdaki JSON örneği, sensör kimliği başına ortalama, minimum ve maksimum sıcaklıkları hesaplar.
{ "aggregates": [ { "dimension": { "uniqueValues": { "input": { "property": "sensorId", "type": "String" }, "take": 100 } }, "measures": [ { "avg": { "input": { "property": "temperature", "type": "Double" } } }, { "min": { "input": { "property": "temperature", "type": "Double" } } }, { "max": { "input": { "property": "temperature", "type": "Double" } } } ] } ] }
Not
Aggregates yan tümcesi, en üst düzeyde birden fazla toplama belirtmenize olanak tanıyan bir dizidir.
Aşağıdaki JSON örneği, şehir başına ve üretici başına ortalama sıcaklığı bağımsız olarak hesaplar:
{ "aggregates": [ { "dimension": { "uniqueValues": { "input": { "property": "city", "type": "String" }, "take": 100 } }, "measures": [ { "avg": { "input": { "property": "temperature", "type": "Double" } } } ] }, { "dimension": { "uniqueValues": { "input": { "property": "manufacturer", "type": "String" }, "take": 100 } }, "measures": [ { "avg": { "input": { "property": "temperature", "type": "Double" } } } ] } ] }
Not
- Toplama dizisinde birden fazla öğe bulunması şu anda desteklenmemektedir.
- Ancak, toplama tanımı daha esnek, çok boyutlu bir kafes belirten iç içe dizi içerebilir.
Aşağıdaki JSON örneği, sensör kimliği başına dakika başına ortalama sıcaklığı hesaplar.
{ "aggregates": [ { "dimension": { "uniqueValues": { "input": { "property": "sensorId", "type": "String" }, "take": 100 } }, "aggregate": { "dimension": { "dateHistogram": { "input": { "builtInProperty": "$ts" }, "breaks": { "size": "1m" } } }, "measures": [ { "avg": { "input": { "property": "temperature", "type": "Double" } } } ] } } ] }
Ayrıca bkz.
Azure Time Series Insights 1. Nesil API'leri hakkında daha fazla bilgi için bkz. 1. Nesil API'ler.
İstek ve kimlik doğrulama parametreleri hakkında bilgi edinmek için bkz. Kimlik doğrulaması ve yetkilendirme.
1. Nesil belgelerini gözden geçirerek Azure Time Series Insights 1. Nesil hakkında daha fazla bilgi edinin.