İçeriğe geç

Datasource API

Datasource API, script’ler içinden relational (SQL) ve time-series (InfluxQL) veri kaynaklarına sorgu gönderir. Tek bir çağrı birden fazla result set dönebilir — her sorgu sonucu bir ResultDto olarak sarılır.

Varsayılan veritabanında SQL sorgusu çalıştırır.

var qr = ins.runSql("SELECT id, name, value FROM custom_table");
var rows = qr.getResult(0).getRows();
// rows = [ {id: 1, name: "temp", value: 25.4}, ... ]
rows.forEach(function(row) {
ins.consoleLog(row.id + ": " + row.name + " = " + row.value);
});

Tanımlı bir dış veri kaynağında çalıştırır.

var qr = ins.runSql("erp_database", "SELECT production_count FROM daily_report");

Doğrudan JDBC bağlantı bilgisiyle çalıştırır.

var qr = ins.runSql(
"jdbc:postgresql://192.168.1.50:5432/erp",
"reader", "password123",
"SELECT * FROM orders WHERE status = 'active'"
);

Varsayılan InfluxDB veri kaynağında sorgu çalıştırır.

var qr = ins.runInfluxQL(
"SELECT mean(value) FROM variable_values WHERE time > now() - 1h GROUP BY time(5m)"
);
qr.getResults().forEach(function(series) {
ins.consoleLog(series.getName() + ": " + series.getValues().length + " points");
});

Tanımlı bir dış InfluxDB veri kaynağında çalıştırır.

ins.runInfluxQL(url, username, password, influxQL)

Section titled “ins.runInfluxQL(url, username, password, influxQL)”

Doğrudan InfluxDB bağlantı bilgisiyle çalıştırır.

Platformda önceden tanımlanmış sorgu şablonlarını getirir — sorguyu çalıştırmaz, yalnızca metni döner.

var sql = ins.getCustomSqlQuery("daily_report");
var qr = ins.runSql(sql);
var influxQL = ins.getCustomInfluxQLQuery("hourly_avg");
var qr2 = ins.runInfluxQL(influxQL);

runSql ve runInfluxQL her zaman bir QueryResultDto döner; içinde bir veya birden fazla ResultDto olur.

MetodDönüşAçıklama
getSize()IntegerResult set sayısı
getResult(index)ResultDtoIndex’e göre tek bir result
getResults()List<ResultDto>Tüm result’lar

Her result’ın getType() metodu tipini söyler: "list", "scalar" veya "series".

1. ListResultDto (type = "list") — SELECT sorguları.

MetodDönüş
getRows()List<Map<String, Object>> — her satır kolon adı → değer
var r = ins.runSql("SELECT id, name FROM t").getResult(0);
// r.getType() → "list"
var rows = r.getRows();
// rows[0] = { id: 1, name: "x" }

2. ScalarResultDto (type = "scalar") — INSERT / UPDATE / DELETE ve benzeri DML.

MetodDönüş
getResult()int — etkilenen satır sayısı
var r = ins.runSql("UPDATE t SET x=1 WHERE id=2").getResult(0);
// r.getType() → "scalar"
// r.getResult() → 1

3. SeriesResultDto (type = "series") — InfluxQL sonuçları.

MetodDönüş
getName()String — series adı (genelde measurement)
getTags()Map<String, String>
getColumns()List<String> — sütun adları
getValues()List<List<Object>> — her satır kolon sırasında değerler
var series = ins.runInfluxQL("SELECT mean(value) FROM cpu GROUP BY host").getResult(0);
// series.getType() → "series"
var cols = series.getColumns(); // ["time", "mean"]
series.getValues().forEach(function(row) {
ins.consoleLog(row[0] + "" + row[1]);
});