Browse Source

HUE-5232 [metadata] Add top joins API

Romain Rigaux 9 years ago
parent
commit
b02c739

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

@@ -204,13 +204,13 @@ def popular_values(request):
 
 @require_POST
 @error_handler
-def popular_joins(request):
+def top_joins(request):
   response = {'status': -1}
 
-  database_name = request.POST.get('databaseName')
+  db_tables = json.loads(request.POST.get('dbTables'), '[]')
 
   api = OptimizerApi()
-  data = api.popular_joins(database_name=database_name)
+  data = api.top_joins(db_tables=db_tables)
 
   if data['status'] == 'success':
     response['status'] = 0

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

@@ -215,12 +215,13 @@ class OptimizerApi(object):
         '--table-name', table_name.lower()
     ])
 
-  def popular_joins(self, database_name=None):
+  def top_joins(self, db_tables=None):
     args = [
         '--tenant', self._product_name,
     ]
-    if database_name:
-      args += ['--db-name', database_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-joins', args)
 

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

@@ -16,7 +16,6 @@
 # limitations under the License.
 
 import logging
-import json
 
 from nose.plugins.skip import SkipTest
 from nose.tools import assert_equal, assert_true
@@ -186,8 +185,8 @@ class TestOptimizerApi(object):
     assert_true('popularValues' in resp, resp)
 
 
-  def test_popular_joins(self):
-    resp = self.api.popular_joins(database_name='db1')
+  def test_top_joins(self):
+    resp = self.api.top_joins(db_tables='db1.Part')
 
     assert_equal('success', resp['status'], resp)
     assert_true('tables' in resp['results'][0], resp)

+ 9 - 8
desktop/libs/metadata/src/metadata/urls.py

@@ -36,15 +36,16 @@ urlpatterns = patterns('metadata.navigator_api',
 
 # Optimizer API
 urlpatterns += patterns('metadata.optimizer_api',
-  url(r'^api/optimizer_api/upload_history/?$', 'upload_history', name='upload_history'),
-  url(r'^api/optimizer_api/popular_values/?$', 'popular_values', name='popular_values'),
-  url(r'^api/optimizer_api/similar_queries/?$', 'similar_queries', name='similar_queries'),
+  url(r'^api/optimizer/upload_history/?$', 'upload_history', name='upload_history'),
+  url(r'^api/optimizer/popular_values/?$', 'popular_values', name='popular_values'),
+  url(r'^api/optimizer/similar_queries/?$', 'similar_queries', name='similar_queries'),
 
   #v2
-  url(r'^api/optimizer_api/get_tenant/?$', 'get_tenant', name='get_tenant'),
+  url(r'^api/optimizer/get_tenant/?$', 'get_tenant', name='get_tenant'),
 
-  url(r'^api/optimizer_api/top_tables/?$', 'top_tables', name='top_tables'),
-  url(r'^api/optimizer_api/table_details/?$', 'table_details', name='table_details'),
-  url(r'^api/optimizer_api/query_risk/?$', 'query_risk', name='query_risk'),
-  url(r'^api/optimizer_api/query_compatibility/?$', 'query_compatibility', name='query_compatibility'),
+  url(r'^api/optimizer/top_tables/?$', 'top_tables', name='top_tables'),
+  url(r'^api/optimizer/top_joins/?$', 'top_joins', name='top_joins'),
+  url(r'^api/optimizer/table_details/?$', 'table_details', name='table_details'),
+  url(r'^api/optimizer/query_risk/?$', 'query_risk', name='query_risk'),
+  url(r'^api/optimizer/query_compatibility/?$', 'query_compatibility', name='query_compatibility'),
 )