浏览代码

HUE-3450 [metastore] Mock table statistics to all the databases

Romain Rigaux 9 年之前
父节点
当前提交
87681a2

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

@@ -48,7 +48,7 @@
     self.loading = ko.observable(false);
     self.tables = ko.observableArray();
     self.stats = ko.observable();
-    self.optimizerStats = ko.observable();
+    self.optimizerStats = ko.observableArray();
 
     self.tableQuery = ko.observable('').extend({rateLimit: 150});
 
@@ -105,7 +105,7 @@
               self.tables().forEach(function (table) {
                 table.optimizerStats(tableIndex[table.name]);
               });
-              self.optimizerStats(ko.mapping.fromJS(data.top_tables));
+              self.optimizerStats(data.top_tables);
             } else {
               $(document).trigger("error", data.message);
             }

+ 5 - 8
apps/metastore/src/metastore/templates/metastore.mako

@@ -374,11 +374,11 @@ ${ assist.assistPanel() }
       </div>
       <!-- /ko -->
 
-      <!-- ko if: $root.optimizerEnabled() && optimizerStats()  -->
+      <!-- ko if: $root.optimizerEnabled() && $root.database().optimizerStats().length > 0 -->
       <div class="span4 tile chart-container">
         <h4>${ _('Popular tables') }</h4>
 
-        <div data-bind="attr:{'id': 'optimizerPieChart'}, pieChart: {data: {counts: [{'name': 'customers', 'total': 30}, {'name': 'sample_07', 'total': 10}, {'name': 'web_logs', 'total': 100}]}, fqs: ko.observableArray([]),
+        <div data-bind="attr:{'id': 'optimizerPieChart'}, pieChart: {data: {counts: $root.database().optimizerStats().sort(function(a, b) { return -(a.popularity - b.popularity); }).slice(0, 5)}, fqs: ko.observableArray([]),
                       transformer: pieChartDataTransformer, maxWidth: 200, parentSelector: '.chart-container' }" class="chart"></div>
 
       </div>
@@ -456,7 +456,7 @@ ${ assist.assistPanel() }
                 <a class="tableLink" href="javascript:void(0);" data-bind="text: name, click: function() { $parent.setTable($data, function(){ huePubSub.publish('metastore.url.change'); }) }"></a>
               </td>
               <td data-bind="text: comment"></td>
-              <!-- ko if: optimizerStats -->
+              <!-- ko if: $root.optimizerEnabled -->
                 <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 + '%' }, attr: {'title': optimizerStats().popularity} "></div>
@@ -464,10 +464,7 @@ ${ assist.assistPanel() }
                 </td>
                 <td data-bind="text: optimizerStats().column_count"></td>
               <!-- /ko -->
-              <!-- ko ifnot: optimizerStats -->
-                <td>&nbsp;</td>
-                <td>&nbsp;</td>
-              <!-- /ko -->
+
               <td class="center">
                 <!-- ko if: type == 'Table' -->
                   <i class="fa fa-fw fa-table muted" title="${ _('Table') }"></i>
@@ -836,7 +833,7 @@ ${ assist.assistPanel() }
     $(rawDatum.counts).each(function (cnt, item) {
       _data.push({
         label: item.name,
-        value: item.total,
+        value: item.popularity,
         obj: item
       });
     });

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

@@ -57,7 +57,7 @@ def top_tables(request):
   response = {'status': -1}
 
   database = request.POST.get('database', 'default')
-  len = request.POST.get('len', 500)
+  len = request.POST.get('len', 1000)
 
   api = OptimizerApi()
 
@@ -69,7 +69,7 @@ def top_tables(request):
     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)
-    ]
+    ][:len]
   else:
     tables = api.top_tables()