def findHelper(self, where): query = 'SELECT * FROM search WHERE %s' % (where) metrics = [] def processResult(key, family, column, val, ts): metrics.append(key) HyperTablePool.doQuery(query, processResult) return metrics
def searchHypertable(request): query = addPrefix(request.POST['query']) log.info('query: %s', query) if not query: return HttpResponse("") query = 'SELECT * FROM search WHERE ROW REGEXP ".*%s.*"' % (query) metrics = [] def processResult(key, family, column, val, ts): metrics.append(removePrefix(key)) HyperTablePool.doQuery(query, processResult) result_string = ','.join(metrics) return HttpResponse(result_string, mimetype='text/plain')
def find(self, query): query = addPrefix(query) query_parts = query.split('.') pattern = '.'.join(query_parts[0:-1]) + '|' query = 'SELECT * FROM tree WHERE row =^ "%s"' % pattern log.info('find query: %s' % query) nodes = [] def processResult(key, family, column, val, ts): if column == 'has_children': nodes.append(HyperNode(key.replace('|', '.'), val == '0')) HyperTablePool.doQuery(query, processResult) return nodes
def fetchDataFromHyperTable(requestContext, pathExpr): if pathExpr.lower().startswith('graphite.'): pathExpr = pathExpr[9:] pathExpr = addPrefix(pathExpr) metrics = [addPrefix(m) for m in HyperStore().find(pathExpr)] startTime = requestContext['startTime'].strftime('%Y-%m-%d %H:%M:%S') endTime = requestContext['endTime'].strftime('%Y-%m-%d %H:%M:%S') start, end, step = timestamp(requestContext['startTime']), timestamp(requestContext['endTime']), 10 buckets = (end - start) / step where = ' OR '.join(['ROW = "%s"' % m for m in metrics]) query = 'SELECT metric FROM metrics WHERE (%s) AND "%s" < TIMESTAMP < "%s"' % (where, startTime, endTime) log.info(query) valuesMap = {} for m in metrics: valuesMap[m] = [None for x in xrange(0, buckets)] def processResult(key, family, column, val, ts): its = long(ts) / 1000000000L bucket = int((its - start) / step) if bucket >= 0 or bucket < buckets: if valuesMap[key][bucket]: valuesMap[key][bucket] = float(val) else: valuesMap[key][bucket] = float(val) HyperTablePool.doQuery(query, processResult) seriesList = [] for m in metrics: series = TimeSeries(removePrefix(m), start, end, step, valuesMap[m]) series.pathExpression = pathExpr # hack to pass expressions through to render functions seriesList.append(series) return seriesList