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
Exemple #2
0
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
Exemple #4
0
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