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

HUE-8805 [notebook] Single query number of execution and copies

Romain Rigaux 6 жил өмнө
parent
commit
ef35ea2834

+ 1 - 1
desktop/libs/dashboard/src/dashboard/models.py

@@ -958,7 +958,7 @@ def extract_solr_exception_message(e):
     message = json.loads(e.message)
     msg = message['error'].get('msg')
     response['error'] = msg if msg else message['error']['trace']
-  except Exception, e2:
+  except Exception as e2:
     LOG.exception('Failed to extract json message: %s' % force_unicode(e2))
     LOG.exception('Failed to parse json response: %s' % force_unicode(e))
     response['error'] = force_unicode(e)

+ 32 - 1
desktop/libs/notebook/src/notebook/models.py

@@ -26,6 +26,8 @@ import uuid
 from datetime import timedelta
 
 from django.contrib.auth.models import User
+from django.db.models import Count
+from django.db.models.functions import Trunc
 from django.utils.html import escape
 
 from desktop.lib.i18n import smart_unicode
@@ -469,7 +471,7 @@ def _update_property_value(properties, key, value):
 class Anaytics():
 
   @classmethod
-  def admin_stats(self):
+  def admin_stats(cls):
     stats = []
     one_week = datetime.date.today() - timedelta(weeks=1)
     one_month = datetime.date.today() - timedelta(days=30)
@@ -484,4 +486,33 @@ class Anaytics():
     stats.append(('Active users 30 days', User.objects.filter(last_login__gte=one_month).count()))
     stats.append(('Active users 90 days', User.objects.filter(last_login__gte=three_months).count()))
 
+    print(cls.user_stats(1))
+    print(cls.query_stats(69371))
+
+    return stats
+
+  @classmethod
+  def user_stats(cls, user_id):
+    stats = []
+    one_month = datetime.date.today() - timedelta(days=30)
+
+    user = User.objects.get(id=user_id)
+    queries = Document2.objects.filter(owner__id=user_id, type__startswith='query-', is_trashed=False, is_managed=False)
+
+    stats.append(('User', '%s - %s' % (user_id, user.username)))
+    stats.append(('Executions', queries.filter(is_history=True, type__startswith='query-').count()))
+    stats.append(('Saved', queries.filter(is_history=False, type__startswith='query-').count()))
+    last_month_daily = queries.filter(last_modified__gte=one_month).annotate(day=Trunc('last_modified', 'day')).values('day').annotate(c=Count('day')).values('day', 'c').order_by('day')
+    stats.append(('Daily executions 30 days', last_month_daily))
+
+    return stats
+
+  @classmethod
+  def query_stats(cls, query_id):
+    stats = []
+
+    query = Document2.objects.get(id=query_id)
+    stats.append(('Query', '%s - %s' % (query_id, query.name)))
+    stats.append(('Executions', query.dependents.filter(is_history=True, type__startswith='query-').count()))
+
     return stats