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 d846cf4f7f9b916fd12cc7eb9b88d9cc1b7ffc16..55fcb39ac483d7819dc18131d6e2764576ab69d4 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