def get_qdb_conn(uri, cluster_public_key=None, user_security_file=None): if cluster_public_key and user_security_file: user, private_key = _parse_user_security_file(user_security_file) public_key = _slurp(cluster_public_key) return quasardb.Cluster(uri, user_name=user, user_private_key=private_key, cluster_public_key=public_key) else: return quasardb.Cluster(uri)
def post(self): body = json.loads(request.data) range_ = body.get('range', None) targets = body.get('targets', None) if range_ != None and targets != None: cluster = app.config.get('QDB_CLUSTER_URI', None) separator = app.config.get('SEPARATOR_TS_LABEL', None) tag_grafana = app.config.get('TAG_TS_GRAFANA', None) if cluster != None and separator != None and tag_grafana != None: c = quasardb.Cluster(cluster) tag = c.tag(tag_grafana) timeseries = list(tag.get_entries()) grafana_data = [] from_ = range_.get('from', None) to_ = range_.get('to', None) range1start = dateutil.parser.parse(from_) range1end = dateutil.parser.parse(to_) timeseries = [] # Grabbing all timeseries tagged with 'grafana' tag tag = c.tag(tag_grafana) entries = list(tag.get_entries()) for entry in entries: ts = c.ts(entry) cols = ts.columns_info() cols_name = [] for col in cols: name = entry + separator + col.name timeseries.append(name) # looping over targets returning datapoints for selected entries for t in targets: for ts in timeseries: if ts == t.get('target'): ts_ = c.ts(ts.split(separator)[0]) col_ = ts.split(separator)[1] col_selected = ts_.column( quasardb.TimeSeries.DoubleColumnInfo(col_)) range1 = (range1start, range1end) results = col_selected.get_ranges([range1]) res = json.dumps(results, default=json_serializer) data = json.loads(res) datapoints = [] for i in xrange(0, len(data)): datapoints.append( [int(data[i][1]), int(data[i][0])]) grafana_data.append({ 'target': ts, 'datapoints': datapoints }) return grafana_data else: return { 'error': 'No range given for timeserie or missing target(s)' }
def post(self): cluster_uri = app.config.get('QDB_CLUSTER_URI', None) separator = app.config.get('SEPARATOR_TS_LABEL', None) if cluster_uri != None and separator != None: cluster = quasardb.Cluster(cluster_uri) tag = cluster.tag('grafana') entries = list(tag.get_entries()) results = [] for entry in entries: ts = cluster.ts(entry) cols = ts.columns_info() cols_name = [] for col in cols: name = entry + separator + col.name result = {"text": name, "value": name} results.append(result) return results
import asyncio import websockets import json import orjson import quasardb from datetime import timedelta cluster = quasardb.Cluster("qdb://127.0.0.1:2836") ts = cluster.ts("book") try: ts.remove() except: pass try: columns = [ quasardb.ColumnInfo(quasardb.ColumnType.Int64, "change_id"), quasardb.ColumnInfo(quasardb.ColumnType.Int64, "level"), quasardb.ColumnInfo(quasardb.ColumnType.Double, "bid"), quasardb.ColumnInfo(quasardb.ColumnType.Double, "ask"), quasardb.ColumnInfo(quasardb.ColumnType.Double, "bid_size"), quasardb.ColumnInfo(quasardb.ColumnType.Double, "ask_size"), ] ts.create(columns, shard_size=timedelta(seconds=720)) except quasardb.Error: pass length = 20 batch_columns = [
import quasardb import datetime as dt from datetime import timedelta, date from random import randrange import json, time, sys c = quasardb.Cluster('qdb://127.0.0.1:2836') timeseries = ['ts0', 'ts1'] cluster_uri = 'qdb://127.0.0.1:2836' separator = '.' results = [] if cluster_uri != None and separator != None: cluster = quasardb.Cluster(cluster_uri) tag = cluster.tag('grafana') entries = list(tag.get_entries()) for entry in entries: ts = cluster.ts(entry) cols = ts.columns_info() cols_name = [] for col in cols: name = entry + separator + col.name result = {"text": name, "value": name} results.append(result) # insertion of some summy data for tslabel in timeseries: ts = c.ts(tslabel) try: cols = ts.create([quasardb.TimeSeries.DoubleColumnInfo("col1")])
def get_qdb_conn(uri): return quasardb.Cluster(uri)