Эх сурвалжийг харах

HUE-3294 [metadata] Support db-table-list in top columns and filter

Romain Rigaux 9 жил өмнө
parent
commit
5d029b1

+ 3 - 4
desktop/libs/metadata/src/metadata/optimizer_api.py

@@ -186,12 +186,11 @@ def similar_queries(request):
 def top_filters(request):
   response = {'status': -1}
 
-  database_name = request.POST.get('databaseName')
-  table_name = request.POST.get('tableName')
+  db_tables = json.loads(request.POST.get('dbTables'), '[]')
   column_name = request.POST.get('columnName') # Unsused
 
   api = OptimizerApi()
-  data = api.top_filters(database_name=database_name, table_name=table_name, column_name=column_name)
+  data = api.top_filters(db_tables=db_tables)
 
   if data['status'] == 'success':
     response['status'] = 0
@@ -269,7 +268,7 @@ def top_columns(request):
 
   if data['status'] == 'success':
     response['status'] = 0
-    response['values'] = data['results']
+    response['values'] = data
   else:
     response['message'] = 'Optimizer: %s' % data
 

+ 17 - 11
desktop/libs/metadata/src/metadata/optimizer_client.py

@@ -209,12 +209,15 @@ class OptimizerApi(object):
     ])
 
 
-  def top_filters(self, database_name, table_name, column_name=None):
-    return self._exec('get-top-filters', [
+  def top_filters(self, db_tables=None):
+    args = [
         '--tenant', self._product_name,
-        '--db-name', database_name.lower(),
-        '--table-name', table_name.lower()
-    ])
+    ]
+    if db_tables:
+      args += ['--db-table-list']
+      args.extend([db_table.lower() for db_table in db_tables])
+
+    return self._exec('get-top-filters', args)
 
 
   def top_aggs(self, database_name, table_name, column_name=None):
@@ -225,12 +228,15 @@ class OptimizerApi(object):
     ])
 
 
-  def top_columns(self, database_name, table_name, column_name=None):
-    return self._exec('get-top-columns', [
-        '--tenant', self._product_name,
-        '--db-name', database_name.lower(),
-        '--table-name', table_name.lower()
-    ])
+  def top_columns(self, db_tables=None):
+    args = [
+        '--tenant', self._product_name
+    ]
+    if db_tables:
+      args += ['--db-table-list']
+      args.extend([db_table.lower() for db_table in db_tables])
+
+    return self._exec('get-top-columns', args)
 
 
   def top_joins(self, db_tables=None):

+ 2 - 2
desktop/libs/metadata/src/metadata/optimizer_client_tests.py

@@ -177,8 +177,8 @@ class TestOptimizerApi(object):
     assert_true('clauseString' in resp, resp)
 
 
-  def test_popular_filter_values(self):  # Requires test_upload to run before
-    resp = self.api.popular_filter_values(database_name='db1', table_name='Part')
+  def test_top_filters(self):  # Requires test_upload to run before
+    resp = self.api.top_filters(db_tables='db1.Part')
 
     assert_equal('success', resp['status'], resp)
     assert_true('qids' in resp, resp)