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

HUE-3450 [metastore] Support statistics by databases

Romain Rigaux 9 жил өмнө
parent
commit
f3850a2e2c

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

@@ -94,7 +94,9 @@
         self.loaded(true);
         self.loading(false);
         if (optimizerEnabled) {
-          $.post('/metadata/api/optimizer_api/top_tables', function(data){
+          $.post('/metadata/api/optimizer_api/top_tables', {
+            database: self.name
+          }, function(data){
             if (data && data.status == 0) {
               var tableIndex = {};
               data.top_tables.forEach(function (topTable) {

+ 1 - 1
apps/metastore/src/metastore/templates/metastore.mako

@@ -459,7 +459,7 @@ ${ assist.assistPanel() }
               <!-- ko if: optimizerStats -->
                 <td>
                   <div class="progress" style="height: 10px; width: 70px; margin-top:5px;">
-                    <div class="bar" style="background-color: #338bb8" data-bind="style: { 'width' : optimizerStats().popularity + '%' }"></div>
+                    <div class="bar" style="background-color: #338bb8" data-bind="style: { 'width' : optimizerStats().popularity + '%' }, attr: {'title': optimizerStats().popularity} "></div>
                   </div>
                 </td>
                 <td data-bind="text: optimizerStats().column_count"></td>

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

@@ -56,14 +56,24 @@ def error_handler(view_fn):
 def top_tables(request):
   response = {'status': -1}
 
+  database = request.POST.get('database', 'default')
   len = request.POST.get('len', 500)
 
   api = OptimizerApi()
 
-  response['top_tables'] = api.top_tables() if not OPTIMIZER.MOCKING.get() else [
-      {'name': 'customers', 'popularity': random.randint(1, 100) , 'column_count': random.randint(1, 100), 'is_fact': bool(random.getrandbits(1))}
-    for i in xrange(0, len)
-  ]
+  if OPTIMIZER.MOCKING.get():
+    from beeswax.server import dbms
+    from beeswax.server.dbms import get_query_server_config
+    
+    db = dbms.get(request.user)
+    tables = [
+      {'name': table, 'popularity': random.randint(1, 100) , 'column_count': random.randint(1, 100), 'is_fact': bool(random.getrandbits(1))}
+      for table in db.get_tables(database=database)
+    ]
+  else:
+    tables = api.top_tables()
+
+  response['top_tables'] = tables
   response['status'] = 0
 
   return JsonResponse(response)