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.
IoT Hub, cihaz ikizleri, modül ikizleri, işler ve ileti yönlendirme ile ilgili bilgileri almak için güçlü bir SQL benzeri dil sağlar. Bu makale şunları sunar:
- IoT Hub sorgu dilinin temel özelliklerine giriş.
- Dilin ayrıntılı açıklaması. İleti yönlendirme için sorgu dili hakkında daha fazla bilgi için bkz. IoT Hub ileti yönlendirme sorgusu söz dizimi.
Belirli örnekler için bkz. Queries for IoT Hub device and module twins veya Queries for IoT Hub jobs.
Note
Buluttan cihaza mesajlaşma, cihaz ikizleri ve cihaz yönetimi gibi bu makalede bahsedilen özelliklerden bazıları yalnızca IoT Hub'ın standart katmanında kullanılabilir. Temel ve standart/ücretsiz IoT Hub katmanları hakkında daha fazla bilgi için bkz. çözüm için doğru IoT Hub katmanını ve boyutunu seçme.
IoT Hub sorguları çalıştırma
IoT hub'ınıza yönelik sorguları doğrudan Azure portalında çalıştırabilirsiniz.
- Azure portalında oturum açın ve IoT hub'ınıza gidin.
- Gezinti menüsünün Cihaz yönetimi bölümünden Sorgular'ı seçin.
- Metin kutusuna sorgunuzu girin ve Sorguyu çalıştır'ı seçin.
Azure IoT hizmet SDK'larını ve hizmet API'lerini kullanarak uygulamalarınız içinde de sorgu çalıştırabilirsiniz.
Örneğin IoT Hub sorgularını uygulayan kod için Hizmet SDK'ları ile sorgu örnekleri bölümüne bakın.
SDK başvuru sayfalarının ve örneklerinin bağlantıları için bkz. Azure IoT Hub SDK.
IoT Hub sorgusunun temelleri
Her IoT Hub sorgusu, isteğe bağlı WHERE ve GROUP BY yan tümceleriyle SELECT ve FROM yan tümcelerinden oluşur.
Sorgular bir JSON belgeleri koleksiyonu üzerinde çalıştırılır, örneğin cihaz ikizleri. FROM yan tümcesi, yinelenecek belge koleksiyonunu (cihazlar, devices.modules veya devices.jobs) gösterir.
Ardından WHERE yan tümcesindeki filtre uygulanır. Toplamalarda, bu adımın sonuçları GROUP BY yan tümcesinde belirtilen şekilde gruplandırılır. Her grup için SELECT yan tümcesinde belirtildiği gibi bir satır oluşturulur.
SELECT <select_list>
FROM <from_specification>
[WHERE <filter_condition>]
[GROUP BY <group_specification>]
SELECT ifadesi
her IoT Hub sorgusunda SELECT <select_list> yan tümcesi gereklidir. Sorgudan alınan değerleri belirtir. Yeni JSON nesneleri oluşturmak için kullanılacak JSON değerlerini belirtir.
FROM koleksiyonunun filtrelenmiş (ve isteğe bağlı olarak gruplandırılmış) alt kümesinin her öğesi için projeksiyon aşaması yeni bir JSON nesnesi oluşturur. Bu nesne, SELECT yan tümcesinde belirtilen değerlerle oluşturulur.
Örneğin:
Tüm değerleri döndür
SELECT *Belirli özellikleri döndürme
SELECT DeviceID, LastActivityTimeSayı döndürmek için sorgunun sonuçlarını toplama
SELECT COUNT() as TotalNumber
Şu anda SELECT'ten farklı seçim yan tümceleri yalnızca cihaz ikizlerindeki toplama sorgularında desteklenmektedir.
Aşağıdaki söz dizimi, SELECT yan tümcesinin dil bilgisidir:
SELECT [TOP <max number>] <projection list>
<projection_list> ::=
'*'
| <projection_element> AS alias [, <projection_element> AS alias]+
<projection_element> :==
attribute_name
| <projection_element> '.' attribute_name
| <aggregate>
<aggregate> :==
count()
| avg(<projection_element>)
| sum(<projection_element>)
| min(<projection_element>)
| max(<projection_element>)
Attribute_name FROM koleksiyonundaki JSON belgesinin herhangi bir özelliğini ifade eder.
FROM cümlesi
FROM <from_specification> yan tümcesi her ioT Hub sorgusunda gereklidir. Üç değerden biri olmalıdır:
- aygıtlar ikiz aygıtları sorgulamak için
- cihazlar.modüller modül ikizlerini sorgulamak için
- devices.jobs'u cihaz başına iş ayrıntılarını sorgulamak için kullanın.
Örneğin:
Tüm cihaz ikizlerini alma
SELECT * FROM devices
WHERE ifadesi
WHERE <filter_condition> yan tümcesi isteğe bağlıdır. FROM koleksiyonundaki JSON belgelerinin sonucun bir parçası olarak eklenmesi için karşılaması gereken bir veya daha fazla koşulu belirtir. Herhangi bir JSON belgesinin sonuçta dahil edilmesi için belirtilen koşulları true olarak değerlendirmesi gerekir.
Örneğin:
Belirli bir cihazı hedefleyen tüm işleri alma
SELECT * FROM devices.jobs WHERE devices.jobs.deviceId = 'myDeviceId'
İzin verilen koşullar İfadeler ve koşullar bölümünde açıklanmıştır.
GROUP BY cümlesi
GROUP BY <group_specification> yan tümcesi isteğe bağlıdır. Bu yan tümce WHERE yan tümcesinde belirtilen filtreden sonra ve SELECT'de belirtilen projeksiyondan önce yürütülür. Belgeleri bir özniteliğin değerine göre gruplandırıyor. Bu gruplar, SELECT yan tümcesinde belirtildiği gibi toplanmış değerler oluşturmak için kullanılır.
Örneğin:
Her telemetri yapılandırma durumunu bildiren cihazların sayısını döndürme
SELECT properties.reported.telemetryConfig.status AS status, COUNT() AS numberOfDevices FROM devices GROUP BY properties.reported.telemetryConfig.status
Şu anda GROUP BY yan tümcesi yalnızca cihaz ikizleri sorgulanırken desteklenmektedir.
Dikkat
Grup terimi şu anda sorgularda özel bir anahtar sözcük olarak ele alınmakta. Özellik adınız olarak kullanıyorsanız group , bu örnekte gösterildiği gibi hatalardan kaçınmak için bunu çift köşeli ayraçla çevreleyin: SELECT * FROM devices WHERE tags.[[group]].name = 'some_value'.
GROUP BY için resmi söz dizimi şöyledir:
GROUP BY <group_by_element>
<group_by_element> :==
attribute_name
| < group_by_element > '.' attribute_name
Attribute_name FROM koleksiyonundaki JSON belgesinin herhangi bir özelliğini ifade eder.
Sorgu sonuçları sayfalaması
Sorgu nesnesi, 100 kayıttan küçük veya buna eşit maksimum sayfa boyutuyla oluşturulur. Birden çok sayfa elde etmek için, Node.js SDK'de nextAsTwin veya .NET SDK yönteminde GetNextAsTwinAsync'i birden çok kez çağırın. Sorgu nesnesi, sorgunun gerektirdiği seri durumdan çıkarma seçeneğine bağlı olarak birden çok Sonraki değeri kullanıma açabilir. Örneğin, bir sorgu nesnesi, projeksiyonları kullanırken cihaz ikizi nesneleri, görev nesneleri veya düz JSON döndürebilir.
İfadeler ve koşullar
Yüksek düzeyde bir ifade:
- Bir JSON türünün örneğini (Boole, sayı, dize, dizi veya nesne gibi) değerlendirir.
- Cihaz JSON belgesinden gelen veriler ve sabitler, yerleşik işleçler ve işlevler kullanılarak işlenerek tanımlanır.
Koşullar , Boole değeri veren ifadelerdir. Boolean true değerinden farklı sabitler false olarak kabul edilir. Bu kural null, tanımsız, herhangi bir nesne veya dizi örneği, herhangi bir dize ve Boole false içerir.
İfadelerin söz dizimi şöyledir:
<expression> ::=
<constant> |
attribute_name |
<function_call> |
<expression> binary_operator <expression> |
<create_array_expression> |
'(' <expression> ')'
<function_call> ::=
<function_name> '(' expression ')'
<constant> ::=
<undefined_constant>
| <null_constant>
| <number_constant>
| <string_constant>
| <array_constant>
<undefined_constant> ::= undefined
<null_constant> ::= null
<number_constant> ::= decimal_literal | hexadecimal_literal
<string_constant> ::= string_literal
<array_constant> ::= '[' <constant> [, <constant>]+ ']'
İfade söz dizimindeki her simgenin ne anlama gelir anlamak için aşağıdaki tabloya bakın:
| Symbol | Tanım |
|---|---|
| özellik_adı | FROM koleksiyonundaki JSON belgesinin herhangi bir özelliği. |
| binary_operator | İşleçler bölümünde listelenen herhangi bir ikili işleç . |
| function_name | İşlevler bölümünde listelenen herhangi bir işlev. |
| decimal_literal | Ondalık gösterimiyle ifade edilen bir float. |
| hexadecimal_literal | '0x' dizesiyle ve ardından onaltılık basamak dizesiyle ifade edilen bir sayı. |
| string_literal | Sıfır veya daha fazla Unicode karakteri veya kaçış dizisiyle temsil edilen Unicode dizeleri. Dize değişmez değerleri tek tırnak veya çift tırnak içine alınır. İzin verilen çıkışlar: \', \", \\, \uXXXX; dört onaltılık basamak tarafından tanımlanan Unicode karakterleri için. |
Operatörler
Aşağıdaki işleçler desteklenir:
| Aile | Operatörler |
|---|---|
| Aritmetik | +, -, *, /, % |
| Mantıksal | VE VEYA DEĞİl |
| Karşılaştırma | =, !=, <, >, <=, >=, <> |
İşlevler
İkizleri ve işleri sorgularken desteklenen tek işlev şudur:
| İşlev | Açıklama |
|---|---|
| IS_DEFINED(property) | Özelliğe bir değer atanıp atanmadığını belirten bir Boole döndürür (dahil null). |
Rota koşullarında aşağıdaki matematik işlevleri desteklenir:
| İşlev | Açıklama |
|---|---|
| ABS(x) | Belirtilen sayısal ifadenin mutlak (pozitif) değerini döndürür. |
| EXP(x) | Belirtilen sayısal ifadenin (e^x) üstel değerini döndürür. |
| POWER(x,y) | Belirtilen ifadenin değerini belirtilen güce (x^y) döndürür. |
| SQUARE(x) | Belirtilen sayısal değerin karesini döndürür. |
| CEILING(x) | Belirtilen sayısal ifadeden büyük veya buna eşit en küçük tamsayı değerini döndürür. |
| FLOOR(x) | Belirtilen sayısal ifadeden küçük veya buna eşit en büyük tamsayıyı döndürür. |
| SIGN(x) | Belirtilen sayısal ifadenin pozitif (+1), sıfır (0) veya negatif (-1) işaretini döndürür. |
| SQRT(x) | Belirtilen sayısal değerin karekökünü döndürür. |
Rota koşullarında aşağıdaki tür denetimi ve atama işlevleri desteklenir:
| İşlev | Açıklama |
|---|---|
| AS_NUMBER | Giriş dizesini sayıya dönüştürür.
noop giriş bir sayıysa; Undefined dize bir sayıyı temsil etmiyorsa. |
| IS_ARRAY | Belirtilen ifadenin türünün bir dizi olup olmadığını belirten bir Boole değeri döndürür. |
| IS_BOOL | Belirtilen ifadenin türünün Boole değeri olup olmadığını belirten bir Boole değeri döndürür. |
| IS_DEFINED | Özelliğin bir değer olup olmadığını belirten bir Boole döndürür. Bu işlev yalnızca değer ilkel bir tür olduğunda desteklenir. İlkel türler dize, Boole, sayısal veya null'dır. DateTime, nesne türleri ve diziler desteklenmez. |
| IS_NULL | Belirtilen ifadenin türünün null olup olmadığını belirten bir Boole değeri döndürür. |
| IS_NUMBER | Belirtilen ifadenin türünün bir sayı olup olmadığını belirten bir Boole değeri döndürür. |
| IS_OBJECT | Belirtilen ifadenin türünün bir JSON nesnesi olup olmadığını belirten bir Boole değeri döndürür. |
| IS_PRIMITIVE | Belirtilen ifadenin türünün ilkel (dize, Boole, sayısal veya null) olup olmadığını belirten bir Boole değeri döndürür. |
| IS_STRING | Belirtilen ifadenin türünün bir dize olup olmadığını belirten bir Boole değeri döndürür. |
Yol koşullarında aşağıdaki dize işlevleri desteklenir:
| İşlev | Açıklama |
|---|---|
| BİRLEŞTİR(x, y, ...) | İki veya daha fazla dize değerini birleştirmenin sonucu olan bir dize döndürür. |
| UZUNLUK(x) | Belirtilen dize ifadesinin karakter sayısını döndürür. |
| LOWER(x) | Büyük harf karakter verilerini küçük harfe dönüştürdükten sonra bir dize ifadesi döndürür. |
| UPPER(x) | Küçük harf karakter verilerini büyük harfe dönüştürdükten sonra bir dize ifadesi döndürür. |
| SUBSTRING(dize, başlangıç [, uzunluk]) | Belirtilen karakter sıfır tabanlı konumdan başlayarak dize ifadesinin bir bölümünü döndürür ve belirtilen uzunluğa veya dizenin sonuna kadar devam eder. |
| INDEX_OF(dize, parça) | belirtilen ilk dize ifadesinde ikinci dize ifadesinin ilk oluşumunun başlangıç konumunu veya dize bulunamazsa -1 döndürür. |
| BAŞLANGIÇ(x, y) | İlk dize ifadesinin ikincisiyle başlayıp başlamadığını gösteren bir Boole döndürür. |
| ENDS_WITH(x, y) | İlk dize ifadesinin ikincisiyle bitip bitmediğini belirten bir Boole döndürür. |
| CONTAINS(x,y) | İlk dize ifadesinin ikincisini içerip içermediğini belirten bir Boole döndürür. |
Hizmet SDK'ları ile sorgu örnekleri
C# örneği
Sorgu işlevselliği,
Basit bir sorgu örneği aşağıda verilmişti:
var query = registryManager.CreateQuery("SELECT * FROM devices", 100);
while (query.HasMoreResults)
{
var page = await query.GetNextAsTwinAsync();
foreach (var twin in page)
{
// do work on twin object
}
}
Sorgu nesnesi, Sorgu sonuçları sayfalandırma bölümünde belirtilen parametrelerle oluşturulur. Birden çok sayfa, GetNextAsTwinAsync yöntemlerini birden çok kez çağırarak erişilir.
Node.js örnek
Sorgu işlevselliği, Azure IoT Hub hizmet SDK'sı tarafından Registry nesnesindeki Node.js için kullanıma sunulur.
Basit bir sorgu örneği aşağıda verilmişti:
var query = registry.createQuery('SELECT * FROM devices', 100);
var onResults = function(err, results) {
if (err) {
console.error('Failed to fetch the results: ' + err.message);
} else {
// Do something with the results
results.forEach(function(twin) {
console.log(twin.deviceId);
});
if (query.hasMoreResults) {
query.nextAsTwin(onResults);
}
}
};
query.nextAsTwin(onResults);
Sorgu nesnesi, Sorgu sonuçları sayfalandırma bölümünde belirtilen parametrelerle oluşturulur.
nextAsTwin yöntemi birden çok kez çağrılarak birden çok sayfa alınır.
IoT Hub cihaz ve modül ikizleri için sorgular
Cihaz ikizleri ve modül ikizleri hem etiketler hem de özellikler olarak rastgele JSON nesneleri içerebilir. IoT Hub, cihaz ikizlerini ve modül ikizlerini tüm ikiz bilgilerini içeren tek bir JSON belgesi olarak sorgulamanızı sağlar.
Aşağıda örnek bir IoT hub cihaz ikizi verilmiştir (modül ikizi yalnızca moduleId parametresiyle benzer olacaktır):
{
"deviceId": "myDeviceId",
"etag": "AAAAAAAAAAc=",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00",
"connectionState": "Disconnected",
"lastActivityTime": "0001-01-01T00:00:00",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"version": 2,
"tags": {
"location": {
"region": "US",
"plant": "Redmond43"
}
},
"properties": {
"desired": {
"telemetryConfig": {
"configId": "db00ebf5-eeeb-42be-86a1-458cccb69e57",
"sendFrequencyInSecs": 300
},
"$metadata": {
...
},
"$version": 4
},
"reported": {
"connectivity": {
"type": "cellular"
},
"telemetryConfig": {
"configId": "db00ebf5-eeeb-42be-86a1-458cccb69e57",
"sendFrequencyInSecs": 300,
"status": "Success"
},
"$metadata": {
...
},
"$version": 7
}
}
}
Cihaz ikizi sorguları
IoT Hub cihaz ikizlerini devices adlı bir belge koleksiyonu olarak kullanıma sunar. Örneğin, en temel sorgu cihaz ikizleri kümesinin tamamını alır:
SELECT * FROM devices
Note
Azure IoT SDK'lar büyük sonuçların sayfalamasını destekler.
SELECT yan tümcesini kullanarak bir sorgunun sonuçlarını toplayabilirsiniz. Örneğin, aşağıdaki sorgu ioT hub'ında toplam cihaz sayısını alır:
SELECT COUNT() as totalNumberOfDevices FROM devices
WHERE yan tümcesini kullanarak sorgu sonuçlarını filtreleyin. Örneğin, location.region etiketinin ABD olarak ayarlandığı cihaz ikizlerini elde etmek için aşağıdaki sorguyu kullanın.
SELECT * FROM devices
WHERE tags.location.region = 'US'
Boole işleçlerini ve aritmetik karşılaştırmaları kullanarak karmaşık WHERE yan tümceleri oluşturun. Örneğin, aşağıdaki sorgu ABD'de bulunan ve her dakikadan daha az telemetri gönderecek şekilde yapılandırılmış cihaz ikizlerini alır:
SELECT * FROM devices
WHERE tags.location.region = 'US'
AND properties.reported.telemetryConfig.sendFrequencyInSecs >= 60
IN ve NIN (içinde değil) işleçleriyle dizi sabitlerini de kullanabilirsiniz. Örneğin, aşağıdaki sorgu, WiFi veya kablolu bağlantıyı bildiren cihaz ikizlerini getirir.
SELECT * FROM devices
WHERE properties.reported.connectivity IN ['wired', 'wifi']
Genellikle belirli bir özelliği içeren tüm cihaz ikizlerini tanımlamak gerekir. IoT Hub bu amaçla is_defined() işlevini destekler. Örneğin, aşağıdaki sorgu, connectivity özelliğini tanımlayan cihaz ikizlerini getirir.
SELECT * FROM devices
WHERE is_defined(properties.reported.connectivity)
Filtreleme özelliklerinin tam kapsamlı bilgisi için WHERE yan tümcesi bölümüne bakın.
Gruplandırma da desteklenir. Örneğin, aşağıdaki sorgu her telemetri yapılandırması durumundaki cihazların sayısını döndürür:
SELECT properties.reported.telemetryConfig.status AS status,
COUNT() AS numberOfDevices
FROM devices
GROUP BY properties.reported.telemetryConfig.status
Bu gruplandırma sorgusu aşağıdaki örneğe benzer bir sonuç döndürür:
[
{
"numberOfDevices": 3,
"status": "Success"
},
{
"numberOfDevices": 2,
"status": "Pending"
},
{
"numberOfDevices": 1,
"status": "Error"
}
]
Bu örnekte üç cihaz yapılandırmanın başarılı olduğunu bildirdi, ikisi yapılandırmayı uygulamaya devam ediyor ve biri hata bildirdi.
Projeksiyon sorguları, geliştiricilerin yalnızca önem verdikleri özellikleri döndürmesine olanak sağlar. Örneğin, bağlantısı kesilmiş tüm etkin cihazların cihaz kimliğiyle birlikte son etkinlik zamanını almak için aşağıdaki sorguyu kullanın:
SELECT DeviceId, LastActivityTime FROM devices WHERE status = 'enabled' AND connectionState = 'Disconnected'
Bu sorgunun sonucu aşağıdaki örneğe benzer olacaktır:
[
{
"deviceId": "AZ3166Device",
"lastActivityTime": "2021-05-07T00:50:38.0543092Z"
}
]
Modül ikiz sorguları
Modül ikizlerinde sorgulama, cihaz ikizlerinde sorgulamaya benzer, ancak farklı bir koleksiyon/ad alanı kullanılır; devicesyerine, içinden sorgularsınız devices.modules:
SELECT * FROM devices.modules
Cihazlar ve devices.modules koleksiyonları arasında birleştirmeye izin vermiyoruz. Modül ikizlerini cihazlar arasında sorgulamak istiyorsanız, bunu etiketlere göre yaparsınız. Aşağıdaki sorgu, tarama durumuna sahip tüm cihazlardaki tüm modül ikizlerini döndürür:
SELECT * FROM devices.modules WHERE properties.reported.status = 'scanning'
Aşağıdaki sorgu, tarama durumuna sahip tüm modül ikizlerini ancak yalnızca belirtilen cihaz alt kümesinde döndürür:
SELECT * FROM devices.modules
WHERE properties.reported.status = 'scanning'
AND deviceId IN ['device1', 'device2']
İkiz sorgu sınırlamaları
Important
Sorgu sonuçları nihai tutarlı işlemlerdir ve 30 dakikaya kadar olan gecikmelere tolerans gösterilmelidir. Çoğu durumda, 'twin query' sonuçları birkaç saniye içinde alır. IoT Hub, tüm işlemler için düşük gecikme süresi sağlamaya çalışır. Ancak, ağ koşulları ve diğer öngörülemeyen faktörler nedeniyle belirli bir gecikme süresini garantileyemez.
İkiz sorgularının alternatif bir seçeneği, get twin REST API'sini kullanarak tek tek cihaz ikizlerini kimlikle sorgulamaktır. Bu API her zaman en son değerleri döndürür ve hız sınırlama limitleri daha yüksektir. REST API'yi doğrudan verebilir veya Azure IoT Hub Hizmet SDK'larından birinde eşdeğer işlevselliği kullanabilirsiniz.
Sorgu ifadelerinin uzunluğu en fazla 8.192 karakter olabilir.
Şu anda karşılaştırmalar yalnızca ilkel türler (nesne olmadan) arasında desteklenir; örneğin ... WHERE properties.desired.config = properties.reported.config , yalnızca bu özelliklerin temel değerleri varsa desteklenir.
Herhangi bir senaryoda İkiz Sorguları için Cihaz Kimliği Özellikleri'nde bulunan lastActivityTime üzerinde bir bağımlılık oluşturmamanızı öneririz. Bu alan, cihaz durumunun doğru bir göstergesini garanti etmez. Bunun yerine, cihaz durumunu ve etkinliklerini yönetmek için IoT Cihaz Yaşam Döngüsü olaylarını kullanın. Çözümünüzde IoT Hub yaşam döngüsü olaylarını kullanma hakkında bilgi için bkz. Event Grid kullanarak IoT Hub olaylarına tepki verin.
Note
Bu işlemin en yüksek gecikme süresiyle ilgili varsayımlarda bulunmaktan kaçının. Gecikme süresini dikkate alarak çözümünüzü oluşturma hakkında daha fazla bilgi için bkz. Gecikme Çözümleri .
IoT Hub işleri için sorgular
İşler cihaz kümelerinde işlemleri yürütmenin bir yolunu sağlar. Her cihaz ikizi, onu hedefleyen işlerin bilgilerini jobs adlı bir koleksiyonda içerir. IoT Hub, işleri tüm ikiz bilgilerini içeren tek bir JSON belgesi olarak sorgulamanızı sağlar.
Aşağıda myJobId adlı bir işin parçası olan örnek bir IoT hub cihaz ikizi verilmiştir:
{
"deviceId": "myDeviceId",
"etag": "AAAAAAAAAAc=",
"tags": {
...
},
"properties": {
...
},
"jobs": [
{
"deviceId": "myDeviceId",
"jobId": "myJobId",
"jobType": "scheduleUpdateTwin",
"status": "completed",
"startTimeUtc": "2016-09-29T18:18:52.7418462",
"endTimeUtc": "2016-09-29T18:20:52.7418462",
"createdDateTimeUtc": "2016-09-29T18:18:56.7787107Z",
"lastUpdatedDateTimeUtc": "2016-09-29T18:18:56.8894408Z",
"outcome": {
"deviceMethodResponse": null
}
},
...
]
}
Şu anda bu koleksiyon, IoT Hub sorgu dilinde devices.jobs olarak sorgulanabilir.
Important
Şu anda cihaz ikizleri sorgulandığında jobs özelliği döndürülmüyor. Yani, FROM devices içeren sorgular. jobs özelliğine yalnızca FROM devices.jobs kullanılarak yapılan sorgularla doğrudan erişilebilir.
Örneğin, aşağıdaki sorgu tek bir cihazı etkileyen tüm işleri (geçmiş ve zamanlanmış) döndürür:
SELECT * FROM devices.jobs
WHERE devices.jobs.deviceId = 'myDeviceId'
Bu sorgunun döndürülen her işin cihaza özgü durumunu (ve muhtemelen doğrudan yöntem yanıtını) nasıl sağladığına dikkat edin.
Koleksiyondaki tüm nesne özelliklerinde devices.jobs rastgele Boole koşullarıyla filtrelemek de mümkündür.
Örneğin, aşağıdaki sorgu belirli bir cihaz için Eylül 2016'da oluşturulan tüm tamamlanmış cihaz ikizi güncelleştirme işlerini alır:
SELECT * FROM devices.jobs
WHERE devices.jobs.deviceId = 'myDeviceId'
AND devices.jobs.jobType = 'scheduleUpdateTwin'
AND devices.jobs.status = 'completed'
AND devices.jobs.createdTimeUtc > '2016-09-01'
Tek bir işin cihaz başına sonuçlarını da alabilirsiniz.
SELECT * FROM devices.jobs
WHERE devices.jobs.jobId = 'myJobId'
İş sorgusu sınırlamaları
Sorgu ifadelerinin uzunluğu en fazla 8.192 karakter olabilir.
Şu anda üzerindeki devices.jobs sorgular şunları desteklemez:
- Bu nedenle projeksiyonlar yalnızca
SELECT *mümkündür. - İş özelliklerine ek olarak cihaz ikizine başvuran koşullar (önceki bölüme bakın).
- Sayı, ortalama ve gruplama gibi toplamalar.
İlgili içerik
- IoT Hub ileti yönlendirme sorgusu söz dizimi ile ileti özelliklerine veya ileti gövdesine göre iletileri yönlendirme hakkında bilgi edinin.