浏览代码

HUE-5224 [metadata] Add popular joins API

Romain Rigaux 9 年之前
父节点
当前提交
22754e755e

+ 1 - 1
apps/metastore/src/metastore/static/metastore/js/metastore.ko.js

@@ -476,7 +476,7 @@ var MetastoreViewModel = (function () {
               }, function(data) {
                 if (data && data.status == 0) {
                   self.navigatorStats(ko.mapping.fromJS(data.entity));
-                  // self.getRelationships();
+                  self.getRelationships();
                 } else {
                   $(document).trigger("info", data.message);
                 }

+ 1 - 0
desktop/core/src/desktop/templates/responsive.mako

@@ -297,6 +297,7 @@ ${ hueIcons.symbols() }
 
 
       <span style="position: fixed; bottom: 0">
+      Create Table<br/>
       Import File<br/>
       Import Queries<br/>
       [+]

+ 19 - 0
desktop/libs/metadata/src/metadata/optimizer_api.py

@@ -201,6 +201,25 @@ def popular_values(request):
   return JsonResponse(response)
 
 
+@require_POST
+@error_handler
+def popular_joins(request):
+  response = {'status': -1}
+
+  database_name = request.POST.get('databaseName')
+
+  api = OptimizerApi()
+  data = api.popular_joins(database_name=database_name)
+
+  if data['status'] == 'success':
+    response['status'] = 0
+    response['values'] = data['results']
+  else:
+    response['message'] = 'Optimizer: %s' % data
+
+  return JsonResponse(response)
+
+
 @require_POST
 @error_handler
 def upload_history(request):

+ 9 - 0
desktop/libs/metadata/src/metadata/optimizer_client.py

@@ -215,6 +215,15 @@ class OptimizerApi(object):
         '--table-name', table_name.lower()
     ])
 
+  def popular_joins(self, database_name=None):
+    args = [
+        '--tenant', self._product_name,
+    ]
+    if database_name:
+      args += ['--db-name', database_name.lower()]
+
+    return self._exec('get-top-joins', args)
+
 
 def OptimizerDataAdapter(queries):
   headers = ['SQL_ID', 'ELAPSED_TIME', 'SQL_FULLTEXT']

+ 12 - 0
desktop/libs/metadata/src/metadata/optimizer_client_tests.py

@@ -186,6 +186,18 @@ class TestOptimizerApi(object):
     assert_true('popularValues' in resp, resp)
 
 
+  def test_popular_joins(self):
+    resp = self.api.popular_joins(database_name='db1')
+
+    assert_equal('success', resp['status'], resp)
+    assert_true('tables' in resp['results'][0], resp)
+    assert_true('queryIds' in resp['results'][0], resp)
+    assert_true('totalTableCount' in resp['results'][0], resp)
+    assert_true('totalQueryCount' in resp['results'][0], resp)
+    assert_true('type' in resp['results'][0], resp)
+    assert_true('columns' in resp['results'][0], resp)
+
+
   def test_similar_queries(self):
     source_platform = 'hive'
     query = 'Select * from (Select item.id from item)'