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:

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.PositiveInfinityve 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

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.FFFFFFFKtek 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ç verir false.
  • 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 falseherhangi 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 truedö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 truedö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' trueTü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') trueile başlayan Durumlu olaylar içingo
endsWith(Status, 'oD') trueDurum ile biten olaylar içinod
startsWith_cs(Status, 'Go') trueile başlayan Durumlu olaylar içinGo
endsWith_cs(Status, 'od') trueile 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') trueveya içeren GoodDurum'a sahip olaylar içinBad
PointValue > 3.14 AND Status.String = 'Good' truePointValue 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' truePointValue değerinden 3.14 büyük ve Veya BaddurumundanGood 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:

    1. Belirtilen ada ve türe sahip tüm özellikler alınır.
    2. Sol taraftaki ve sağ taraftaki işlenenler türe göre çiftler halinde gruplandırılır.
    3. Ç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ı NULLgerektiğ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

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.