diff options
Diffstat (limited to 'lib/gitlab/usage_data_queries.rb')
-rw-r--r-- | lib/gitlab/usage_data_queries.rb | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/lib/gitlab/usage_data_queries.rb b/lib/gitlab/usage_data_queries.rb index c0dfae88fc7..1c776501fdb 100644 --- a/lib/gitlab/usage_data_queries.rb +++ b/lib/gitlab/usage_data_queries.rb @@ -25,6 +25,27 @@ module Gitlab relation.select(relation.all.table[column].sum).to_sql end + # rubocop: disable CodeReuse/ActiveRecord + def histogram(relation, column, buckets:, bucket_size: buckets.size) + count_grouped = relation.group(column).select(Arel.star.count.as('count_grouped')) + cte = Gitlab::SQL::CTE.new(:count_cte, count_grouped) + + bucket_segments = bucket_size - 1 + width_bucket = Arel::Nodes::NamedFunction + .new('WIDTH_BUCKET', [cte.table[:count_grouped], buckets.first, buckets.last, bucket_segments]) + .as('buckets') + + query = cte + .table + .project(width_bucket, cte.table[:count]) + .group('buckets') + .order('buckets') + .with(cte.to_arel) + + query.to_sql + end + # rubocop: enable CodeReuse/ActiveRecord + # For estimated distinct count use exact query instead of hll # buckets query, because it can't be used to obtain estimations without # supplementary ruby code present in Gitlab::Database::PostgresHll::BatchDistinctCounter @@ -36,10 +57,21 @@ module Gitlab 'SELECT ' + args.map {|arg| "(#{arg})" }.join(' + ') end - def maximum_id(model) + def maximum_id(model, column = nil) + end + + def minimum_id(model, column = nil) + end + + def jira_service_data + { + projects_jira_server_active: 0, + projects_jira_cloud_active: 0 + } end - def minimum_id(model) + def epics_deepest_relationship_level + { epics_deepest_relationship_level: 0 } end private |