소스 검색

[impala] First pass on multi type facets

Romain Rigaux 11 년 전
부모
커밋
dc00d6e
2개의 변경된 파일17개의 추가작업 그리고 11개의 파일을 삭제
  1. 17 10
      apps/impala/src/impala/views.py
  2. 0 1
      apps/search/src/search/templates/search.mako

+ 17 - 10
apps/impala/src/impala/views.py

@@ -41,7 +41,7 @@ def dashboard(request):
   return render('dashboard.mako', request, {
     'query_json': json.dumps({}),
     'dashboard_json': dashboard.get_json(request.user), 
-    'initial_json': ''
+    'initial_json': json.dumps('')
   })
 
 
@@ -63,28 +63,35 @@ def query(request):
   else:
     filters = ''
 
-  if 'facet' in request.POST: 
+  if 'facet' in request.POST:
+    if request.POST.get('facet') == 'count':
+      template = "SELECT DISTINCT %(field)s FROM %(database)s.%(table)s WHERE %(field)s IS NOT NULL %(filters)s GROUP BY %(field)s ORDER BY %(field)s DESC LIMIT %(limit)s"
+    else:      
+      # select count(*) as top, salary FROM sample_07 group by salary order by top desc limit 10
+      # select count(*) as top, salary/100 FROM sample_07 group by salary/100 order by top desc limit 10      
+      template = "SELECT DISTINCT %(field)s FROM %(database)s.%(table)s WHERE %(field)s IS NOT NULL %(filters)s ORDER BY %(field)s DESC LIMIT %(limit)s"
     facet = json.loads(request.POST['facet'])
-    hql = "SELECT %(field)s FROM %(database)s.%(table)s WHERE %(field)s IS NOT NULL %(filters)s ORDER BY %(field)s DESC LIMIT %(limit)s" % {
-        'database': database,
-        'table': table,
-        'limit': facet['properties']['limit'],
-        'field': facet['field'],
-        'filters': (' AND ' + filters) if filters else ''
-    }
+    hql = template % {
+          'database': database,
+          'table': table,
+          'limit': facet['properties']['limit'],
+          'field': facet['field'],
+          'filters': (' AND ' + filters) if filters else ''
+      }
     result['id'] = facet['id']
     result['field'] = facet['field']
     fields = [fq['field'] for fq in fqs]
     result['selected'] = facet['field'] in fields
   else:
     fields = ', '.join(dashboard['resultsetSelectedFields']) if dashboard['resultsetSelectedFields'] else '*'
-    hql = "SELECT %(fields)s FROM %(database)s.%(table)s LIMIT 100" % {
+    hql = "SELECT %(fields)s FROM %(database)s.%(table)s" % {
         'database': database, 
         'table': table,
         'fields': fields
     }
     if filters:
       hql += ' WHERE ' + filters
+    hql += ' LIMIT 100'
 
   query_server = get_query_server_config(name='impala')
   db = dbms.get(request.user, query_server=query_server)

+ 0 - 1
apps/search/src/search/templates/search.mako

@@ -889,7 +889,6 @@ nv.dev = false;
 var lastWindowScrollPosition = 0;
 
 function pieChartDataTransformer(data) {
-  console.log(ko.toJSON(data, null, 2));
   var _data = [];
   $(data.counts).each(function (cnt, item) {
     item.widget_id = data.widget_id;