From 0bb09b208b6c1816afffc2ac38e3d48cede2e8a5 Mon Sep 17 00:00:00 2001 From: Taha Yassine Kraiem Date: Fri, 25 Apr 2025 17:17:47 +0100 Subject: [PATCH] refactor(DB): structured JSON attributes (draft) --- .../clickhouse/create/init_schema.sql | 58 ++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/ee/scripts/schema/db/init_dbs/clickhouse/create/init_schema.sql b/ee/scripts/schema/db/init_dbs/clickhouse/create/init_schema.sql index 040b4b337..eba6f793b 100644 --- a/ee/scripts/schema/db/init_dbs/clickhouse/create/init_schema.sql +++ b/ee/scripts/schema/db/init_dbs/clickhouse/create/init_schema.sql @@ -334,6 +334,7 @@ CREATE TABLE IF NOT EXISTS experimental.ios_events SET allow_experimental_json_type = 1; +SET enable_json_type = 1; CREATE DATABASE IF NOT EXISTS product_analytics; @@ -439,7 +440,62 @@ CREATE TABLE IF NOT EXISTS product_analytics.events "$source" LowCardinality(String) DEFAULT '' COMMENT 'the name of the integration that sent the event', "$duration_s" UInt16 DEFAULT 0 COMMENT 'the duration from session-start in seconds', properties JSON DEFAULT '{}', - "$properties" JSON DEFAULT '{}' COMMENT 'these properties belongs to the auto-captured events', + "$properties" JSON( +max_dynamic_paths=0, +label String , +hesitation_time UInt32 , +name String , +payload String , +level Enum8 ('info'=0, 'error'=1), +source Enum8 ('js_exception'=0, 'bugsnag'=1, 'cloudwatch'=2, 'datadog'=3, 'elasticsearch'=4, 'newrelic'=5, 'rollbar'=6, 'sentry'=7, 'stackdriver'=8, 'sumologic'=9), +message String , +error_id String , +duration UInt16, +context Enum8('unknown'=0, 'self'=1, 'same-origin-ancestor'=2, 'same-origin-descendant'=3, 'same-origin'=4, 'cross-origin-ancestor'=5, 'cross-origin-descendant'=6, 'cross-origin-unreachable'=7, 'multiple-contexts'=8), +url_host String , +url_path String , +url_hostpath String , +request_start UInt16 , +response_start UInt16 , +response_end UInt16 , +dom_content_loaded_event_start UInt16 , +dom_content_loaded_event_end UInt16 , +load_event_start UInt16 , +load_event_end UInt16 , +first_paint UInt16 , +first_contentful_paint_time UInt16 , +speed_index UInt16 , +visually_complete UInt16 , +time_to_interactive UInt16, +ttfb UInt16, +ttlb UInt16, +response_time UInt16, +dom_building_time UInt16, +dom_content_loaded_event_time UInt16, +load_event_time UInt16, +min_fps UInt8, +avg_fps UInt8, +max_fps UInt8, +min_cpu UInt8, +avg_cpu UInt8, +max_cpu UInt8, +min_total_js_heap_size UInt64, +avg_total_js_heap_size UInt64, +max_total_js_heap_size UInt64, +min_used_js_heap_size UInt64, +avg_used_js_heap_size UInt64, +max_used_js_heap_size UInt64, +method Enum8('GET' = 0, 'HEAD' = 1, 'POST' = 2, 'PUT' = 3, 'DELETE' = 4, 'CONNECT' = 5, 'OPTIONS' = 6, 'TRACE' = 7, 'PATCH' = 8), +status UInt16, +success UInt8, +request_body String, +response_body String, +transfer_size UInt32, +selector String, +normalized_x Float32, +normalized_y Float32, +message_id UInt64 +) DEFAULT '{}' COMMENT 'these properties belongs to the auto-captured events', description String DEFAULT '', group_id1 Array(String) DEFAULT [], group_id2 Array(String) DEFAULT [],