From e85f0f13cc25fd3b20238ada583518fb678a1b80 Mon Sep 17 00:00:00 2001 From: Uku Taht Date: Mon, 22 Nov 2021 16:06:21 +0200 Subject: [PATCH] Improve Clickhouse DDL --- ...00915070607_create_events_and_sessions.exs | 74 ++++++++++--------- 1 file changed, 40 insertions(+), 34 deletions(-) diff --git a/priv/clickhouse_repo/migrations/20200915070607_create_events_and_sessions.exs b/priv/clickhouse_repo/migrations/20200915070607_create_events_and_sessions.exs index d846cf4f7..55fcb39ac 100644 --- a/priv/clickhouse_repo/migrations/20200915070607_create_events_and_sessions.exs +++ b/priv/clickhouse_repo/migrations/20200915070607_create_events_and_sessions.exs @@ -7,46 +7,52 @@ defmodule Plausible.ClickhouseRepo.Migrations.CreateEventsAndSessions do end defp create_events() do - create_if_not_exists table(:events, engine: "MergeTree() PARTITION BY toYYYYMM(timestamp) ORDER BY (name, domain, user_id, timestamp) SETTINGS index_granularity = 8192") do - add :name, :string - add :domain, :string - add :user_id, :UInt64 - add :session_id, :UInt64 - add :hostname, :string - add :pathname, :string - add :referrer, :string - add :referrer_source, :string - add :country_code, :"LowCardinality(FixedString(2))" - add :screen_size, :"LowCardinality(String)" - add :operating_system, :"LowCardinality(String)" - add :browser, :"LowCardinality(String)" + create_if_not_exists table(:events, + engine: + "MergeTree() PARTITION BY toYYYYMM(timestamp) ORDER BY (domain, toDate(timestamp), user_id) SETTINGS index_granularity = 8192" + ) do + add(:name, :string) + add(:domain, :string) + add(:user_id, :UInt64) + add(:session_id, :UInt64) + add(:hostname, :string) + add(:pathname, :string) + add(:referrer, :string) + add(:referrer_source, :string) + add(:country_code, :"LowCardinality(FixedString(2))") + add(:screen_size, :"LowCardinality(String)") + add(:operating_system, :"LowCardinality(String)") + add(:browser, :"LowCardinality(String)") - add :timestamp, :naive_datetime + add(:timestamp, :naive_datetime) end end defp create_sessions() do - create_if_not_exists table(:sessions, engine: "CollapsingMergeTree(sign) PARTITION BY toYYYYMM(start) ORDER BY (domain, user_id, session_id, start) SETTINGS index_granularity = 8192") do - add :session_id, :UInt64 - add :sign, :"Int8" - add :domain, :string - add :user_id, :UInt64 - add :hostname, :string - add :is_bounce, :boolean - add :entry_page, :string - add :exit_page, :string - add :pageviews, :integer - add :events, :integer - add :duration, :"UInt32" - add :referrer, :string - add :referrer_source, :string - add :country_code, :"LowCardinality(FixedString(2))" - add :screen_size, :"LowCardinality(String)" - add :operating_system, :"LowCardinality(String)" - add :browser, :"LowCardinality(String)" + create_if_not_exists table(:sessions, + engine: + "CollapsingMergeTree(sign) PARTITION BY toYYYYMM(start) ORDER BY (domain, toDate(start), user_id, session_id) SETTINGS index_granularity = 8192" + ) do + add(:session_id, :UInt64) + add(:sign, :Int8) + add(:domain, :string) + add(:user_id, :UInt64) + add(:hostname, :string) + add(:is_bounce, :boolean) + add(:entry_page, :string) + add(:exit_page, :string) + add(:pageviews, :integer) + add(:events, :integer) + add(:duration, :UInt32) + add(:referrer, :string) + add(:referrer_source, :string) + add(:country_code, :"LowCardinality(FixedString(2))") + add(:screen_size, :"LowCardinality(String)") + add(:operating_system, :"LowCardinality(String)") + add(:browser, :"LowCardinality(String)") - add :start, :naive_datetime - add :timestamp, :naive_datetime + add(:start, :naive_datetime) + add(:timestamp, :naive_datetime) end end end