Veri Sorgulama (GET)

ThingsOn HTTP API

ThingsOn HTTP API aracılığıyla ThingsOn DB'deki verilerle etkileşime girmek için SQL benzeri bir sorgu dili kullanılır.

ThingsOn DB Time Series bir veritabanıdır. Eklenen her kayıtta o kaydın eklenme tarihini içeren time adında bir sütun otomatik olarak eklenir. Bu sütun SQL veritabanlarındaki bir satırın ID değerine karşılık gelir.

Her satırda bir time değeri bulunur ve sorgularda kullanılabilir.

Request
GET /query?db=[DB_NAME]&q=[QUERY] HTTP/1.1
Host: cloud.thingson.io:8086
Authorization: Basic [API_KEY]

Parametre

Açıklama

[DB_NAME]

İşlem yapılacak veritabanının adı ile değiştirin

[QUERY]

Oluşturduğunuz sorgu ile değiştirin

[API_KEY]

Kimlik doğrulama için size verilen özel API KEY

Köşeli [ ] parantezleri silmeyi unutmayın ve Türkçe karakter kullanmayın!

ThingsOn DB ile UPDATE işlemi yapılamaz. Yalnızca SELECT, INSERT ve DROP (DELETE) işlemleri yapılabilir.

Response Örnekleri

2xx: Eğer isteğiniz HTTP 200 OK ile sonuçlandıysa sorgunuz başarılıdır! Dönen JSON sorgunuzun sonucudur.
4xx: ThingsOn isteğinizi anlayamadı.
5xx: Sunucu kaynaklı bir sorun oluştu.

ThingsOn DB sorgu sözdizimi aşağıdaki örneklerde gösterilmiştir.

SELECT

SELECT <field1>, <field2> FROM <table_name>
#Örnek: Bir sütun sorgulama
SELECT Sicaklik FROM ProsesParametre
#Örnek: Birden fazla sütun sorgulama
SELECT Sicaklik, Basinc FROM ProsesParametre
#Örnek: Tüm sütunları sorgulama
SELECT * FROM ProsesParametre

WHERE

SELECT_clause FROM_clause WHERE <conditional_expression> [(AND|OR) <conditional_expression> [...]]
#Örnek: Bir koşul sorgulama
SELECT Basinc FROM ProsesParametre WHERE SiviSeviyesi = 78
#Örnek: Birden fazla koşul sorgulama
SELECT * FROM ProsesParametre Where Sicaklik > 300 AND Sicaklik < 400

INTO

INTO deyimi, sorgu sonuçlarını kullanıcı tarafından belirlenen bir tabloya yazar.

SELECT_clause INTO <table_name> FROM_clause [WHERE_clause] [GROUP_BY_clause]
#Örnek: INTO Kullanımı
SELECT * INTO AnaMakine FROM Makine WHERE MakineAdı = 'Makine-1' GROUP BY *

GROUP BY time

SELECT <function>(<field_key>) FROM_clause WHERE <time_range> GROUP BY time(<time_interval>)
#Örnek: Verileri zaman aralıklarına ayırma
#Makine-1'deki son 1 saatlik üretim miktarlarını 10'ar dakika halinde gruplama
#<function> SUM
#<field_key> UretimMiktari
#<time_range> time >= now() - 1h
#<time_interval> 10m
SELECT SUM(UretimMiktari) FROM Fabrika WHERE Makine = 'Makine-1' AND time >= now() - 1h GROUP BY time(10m)

ORDER BY time DESC

Varsayılan olarak, ThingsOn DB artan zaman sırasına göre sonuçları döndürür; döndürülen ilk nokta en eski zamana ve döndürülen son nokta en son zamana sahiptir. ORDER BY time DESC, bu sırayı tersine çevirir; böylece ThingsOn DB ilk önce en son zamandaki noktaları döndürür.

SELECT_clause FROM_clause ORDER BY time DESC
#Örnek
SELECT Sicaklik FROM ProsesParametre ORDER BY time DESC

Time Sözdizimi

ThingsOn DB'deki time formatı RFC3339 standardıdır. HH:MM:SS.nnnnnnnnn opsiyoneldir ve belirtilmemişse 00:00:00.000000000 kabul edilir.

'YYYY-MM-DDTHH:MM:SS.nnnnnnnnnZ'
'2019-02-14T09:59:06.747099492Z'
#Örnek
SELECT MakineDurumu FROM Makine WHERE time >= '2015-08-18T08:30:00.000000000Z' AND time <= '2015-08-18T17:00:00Z'

ThingsOn DB'deki now() fonksiyonu, şu anki zamanı almada kullanılır. Sunucunun geçerli zamanına göre veri sorgulamak için now() kullanın.

ThingsOn DB'deki süre deyimleri şu şekildedir:

u mikrosaniye
ms milisaniye
s saniye
m dakika
h saat
d gün
w hafta
#Örnek: Sorguda süre deyimlerini kullanma
SELECT Basinc FROM ProsesParametre WHERE time > now() - 2w AND time < now() - 7d

ThingsOn DB'deki time() fonksiyonu, kullanıcı tarafından belirlenen bir zaman aralığını ifade eder ve GROUP BY sorgularında kullanılır.

#Örnek: 30 saniyelik aralıklar
time(30s)
#Örnek: 4 saatlik aralıklar
time(4h)

Fonksiyonlar

Sorgulanan verileri kümelemek, hesaplamak veya dönüştürmek gibi işlemler için fonksiyonları kullanabilirsiniz.

#Örnek: Fonksiyon kullanımı
SELECT COUNT(DurusSuresi) FROM Makine
#Örnek: Fonksiyon kullanımı
SELECT ROUND(*) FROM ProsesParametre
#Örnek: Fonksiyon kullanımı
SELECT TOP(Kalite,10) FROM Uretim
  • COUNT(<field>) Boş olmayan sütun değerlerinin sayısını döndürür.

  • DISTINCT(<field>) Benzersiz (unique) sütun değerlerinin listesini döndürür.

  • MEAN(<field>) Sütun değerlerinin aritmetik ortalamasını (average) döndürür.

  • MEDIAN(<field>) Sıralanan sütun değerleri listesinden ortanca değeri döndürür.

  • MODE(<field>) Sütun değerleri listesindeki en sık kullanılan değeri döndürür.

  • SUM(<field>) Sütun değerlerinin toplamını döndürür.

  • BOTTOM(<field>,N) En küçük N adet sütun değerini döndürür.

  • FIRST(<field>) En eski satırdaki sütun değerini döndürür.

  • LAST(<field>) En yeni satırdaki sütun değerini döndürür.

  • MAX(<field>) En büyük sütun değerini döndürür.

  • MIN(<field>) En küçük sütun değerini döndürür.

  • TOP(<field>,N) En büyük N adet sütun değerini döndürür.

  • ABS(<field>) Sütun değerinin mutlak değerini döndürür.

  • CEIL(<field>) En yakın tam sayıya yukarı yuvarlanmış ardışık değeri döndürür.

  • FLOOR(<field>) En yakın tam sayıya aşağı yuvarlanmış ardışık değeri döndürür.

  • ROUND(<field>) En yakın tam sayıya yuvarlanmış ardışık değeri döndürür.

Operatörler

ThingsOn DB'deki aritmetik operatörler şu şekildedir:

+ Toplama
- Çıkarma
* Çarpma
/ Bölme
% Mod alma
#Örnek: Aritmetik Operatör Kullanımı
SELECT HatXUretim + HatYUretim FROM Uretim

ThingsOn DB'deki karşılaştırma operatörleri şu şekildedir:

= Eşittir
!= Eşit değildir
> Büyüktür
>= Büyük veya eşittir
< Küçüktür
<= Küçük veya eşittir

ThingsOn DB'deki sorgularda yazılan koşullar AND veya OR kullanılarak birleştirilir.

#Örnek: Koşul ve karşılaştırma operatörü kullanımı
SELECT * FROM KaynakDegiskenleri WHERE (Titresim > 0.3 OR TelHizi != 20) AND Akim <= 900