Skip to content
Snippets Groups Projects

ClickHouse data collector

Merged charlie ablett requested to merge 414610-cablett-clickhouse-data-collector into master
All threads resolved!
Compare and Show latest version
7 files
+ 260
156
Compare changes
  • Side-by-side
  • Inline
Files
7
@@ -2,8 +2,16 @@
module Gitlab
module ContributionAnalytics
class ClickHouseDataCollector < PostgresqlDataCollector
def base_query
class ClickHouseDataCollector
attr_reader :group, :from, :to
def initialize(group:, from:, to:)
@group = group
@from = from
@to = to
end
def totals_by_author_target_type_action
clickhouse_query = <<~CLICKHOUSE
SELECT count(*) as count_all,
"contribution_analytics_events"."author_id" AS events_author_id,
@@ -16,9 +24,9 @@ def base_query
argMax(target_type, contribution_analytics_events.updated_at) as target_type,
argMax(action, contribution_analytics_events.updated_at) as action
FROM contribution_analytics_events
WHERE startsWith(path, '24/')
AND "contribution_analytics_events"."created_at" >= '2022-05-01'
AND "contribution_analytics_events"."created_at" <= '2023-05-07'
WHERE startsWith(path, '#{group_path}/)
AND "contribution_analytics_events"."created_at" >= #{format_date(from)}'
AND "contribution_analytics_events"."created_at" <= '#{format_date(to)}'
GROUP BY id
) contribution_analytics_events
GROUP BY "contribution_analytics_events"."action","contribution_analytics_events"."target_type","contribution_analytics_events"."author_id"
@@ -26,6 +34,16 @@ def base_query
ClickHouse::Client.select(clickhouse_query, :main)
end
private
def group_path
@group_path ||= group.traversal_ids.join('/')
end
def format_date(date)
quote(date.utc.strftime('%Y-%m-%d'))
end
end
end
end
Loading