diff --git a/components/pages/console/TestConsole.js b/components/pages/console/TestConsole.js index 3e907856..4f167b9a 100644 --- a/components/pages/console/TestConsole.js +++ b/components/pages/console/TestConsole.js @@ -33,6 +33,7 @@ export function TestConsole() { booleanError: 'true', time: new Date(), number: 1, + number2: Math.random() * 100, time2: new Date().toISOString(), nested: { test: 'test-data', diff --git a/db/mysql/migrations/02_report_schema/migration.sql b/db/mysql/migrations/02_report_schema/migration.sql deleted file mode 100644 index 0476e9f7..00000000 --- a/db/mysql/migrations/02_report_schema/migration.sql +++ /dev/null @@ -1,19 +0,0 @@ --- CreateTable -CREATE TABLE `report` ( - `report_id` VARCHAR(36) NOT NULL, - `user_id` VARCHAR(36) NOT NULL, - `website_id` VARCHAR(36) NOT NULL, - `type` VARCHAR(200) NOT NULL, - `name` VARCHAR(200) NOT NULL, - `description` VARCHAR(500) NOT NULL, - `parameters` VARCHAR(6000) NOT NULL, - `created_at` TIMESTAMP(0) NULL DEFAULT CURRENT_TIMESTAMP(0), - `updated_at` TIMESTAMP(0) NULL, - - UNIQUE INDEX `report_report_id_key`(`report_id`), - INDEX `report_user_id_idx`(`user_id`), - INDEX `report_website_id_idx`(`website_id`), - INDEX `report_type_idx`(`type`), - INDEX `report_name_idx`(`name`), - PRIMARY KEY (`report_id`) -) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; diff --git a/db/mysql/migrations/03_session_data/migration.sql b/db/mysql/migrations/02_report_schema_session_data/migration.sql similarity index 50% rename from db/mysql/migrations/03_session_data/migration.sql rename to db/mysql/migrations/02_report_schema_session_data/migration.sql index 161b455f..49708899 100644 --- a/db/mysql/migrations/03_session_data/migration.sql +++ b/db/mysql/migrations/02_report_schema_session_data/migration.sql @@ -1,16 +1,3 @@ -/* - Warnings: - - - The primary key for the `event_data` table will be changed. If it partially fails, the table could be left without primary key constraint. - - You are about to drop the column `event_data_type` on the `event_data` table. All the data in the column will be lost. - - You are about to drop the column `event_date_value` on the `event_data` table. All the data in the column will be lost. - - You are about to drop the column `event_id` on the `event_data` table. All the data in the column will be lost. - - You are about to drop the column `event_numeric_value` on the `event_data` table. All the data in the column will be lost. - - You are about to drop the column `event_string_value` on the `event_data` table. All the data in the column will be lost. - - Added the required column `data_type` to the `event_data` table without a default value. This is not possible if the table is not empty. - - Added the required column `event_data_id` to the `event_data` table without a default value. This is not possible if the table is not empty. - -*/ -- AlterTable ALTER TABLE `event_data` RENAME COLUMN `event_data_type` TO `data_type`; ALTER TABLE `event_data` RENAME COLUMN `event_date_value` TO `date_value`; @@ -35,3 +22,32 @@ CREATE TABLE `session_data` ( INDEX `session_data_session_id_idx`(`session_id`), PRIMARY KEY (`session_data_id`) ) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- CreateTable +CREATE TABLE `report` ( + `report_id` VARCHAR(36) NOT NULL, + `user_id` VARCHAR(36) NOT NULL, + `website_id` VARCHAR(36) NOT NULL, + `type` VARCHAR(200) NOT NULL, + `name` VARCHAR(200) NOT NULL, + `description` VARCHAR(500) NOT NULL, + `parameters` VARCHAR(6000) NOT NULL, + `created_at` TIMESTAMP(0) NULL DEFAULT CURRENT_TIMESTAMP(0), + `updated_at` TIMESTAMP(0) NULL, + + UNIQUE INDEX `report_report_id_key`(`report_id`), + INDEX `report_user_id_idx`(`user_id`), + INDEX `report_website_id_idx`(`website_id`), + INDEX `report_type_idx`(`type`), + INDEX `report_name_idx`(`name`), + PRIMARY KEY (`report_id`) +) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; + +-- EventData migration +UPDATE event_data +SET string_value = number_value +WHERE data_type = 2; + +UPDATE event_data +SET string_value = CONCAT(REPLACE(DATE_FORMAT(date_value, '%Y-%m-%d %T'), ' ', 'T'), 'Z') +WHERE data_type = 4; \ No newline at end of file diff --git a/db/postgresql/migrations/02_report_schema/migration.sql b/db/postgresql/migrations/02_report_schema/migration.sql deleted file mode 100644 index f4f3e885..00000000 --- a/db/postgresql/migrations/02_report_schema/migration.sql +++ /dev/null @@ -1,29 +0,0 @@ --- CreateTable -CREATE TABLE "report" ( - "report_id" UUID NOT NULL, - "user_id" UUID NOT NULL, - "website_id" UUID NOT NULL, - "type" VARCHAR(200) NOT NULL, - "name" VARCHAR(200) NOT NULL, - "description" VARCHAR(500) NOT NULL, - "parameters" VARCHAR(6000) NOT NULL, - "created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP, - "updated_at" TIMESTAMPTZ(6), - - CONSTRAINT "report_pkey" PRIMARY KEY ("report_id") -); - --- CreateIndex -CREATE UNIQUE INDEX "report_report_id_key" ON "report"("report_id"); - --- CreateIndex -CREATE INDEX "report_user_id_idx" ON "report"("user_id"); - --- CreateIndex -CREATE INDEX "report_website_id_idx" ON "report"("website_id"); - --- CreateIndex -CREATE INDEX "report_type_idx" ON "report"("type"); - --- CreateIndex -CREATE INDEX "report_name_idx" ON "report"("name"); diff --git a/db/postgresql/migrations/03_session_data/migration.sql b/db/postgresql/migrations/02_report_schema_session_data/migration.sql similarity index 53% rename from db/postgresql/migrations/03_session_data/migration.sql rename to db/postgresql/migrations/02_report_schema_session_data/migration.sql index 0a93d39c..5fe6ef9d 100644 --- a/db/postgresql/migrations/03_session_data/migration.sql +++ b/db/postgresql/migrations/02_report_schema_session_data/migration.sql @@ -21,6 +21,21 @@ CREATE TABLE "session_data" ( CONSTRAINT "session_data_pkey" PRIMARY KEY ("session_data_id") ); +-- CreateTable +CREATE TABLE "report" ( + "report_id" UUID NOT NULL, + "user_id" UUID NOT NULL, + "website_id" UUID NOT NULL, + "type" VARCHAR(200) NOT NULL, + "name" VARCHAR(200) NOT NULL, + "description" VARCHAR(500) NOT NULL, + "parameters" VARCHAR(6000) NOT NULL, + "created_at" TIMESTAMPTZ(6) DEFAULT CURRENT_TIMESTAMP, + "updated_at" TIMESTAMPTZ(6), + + CONSTRAINT "report_pkey" PRIMARY KEY ("report_id") +); + -- CreateIndex CREATE INDEX "session_data_created_at_idx" ON "session_data"("created_at"); @@ -29,3 +44,27 @@ CREATE INDEX "session_data_website_id_idx" ON "session_data"("website_id"); -- CreateIndex CREATE INDEX "session_data_session_id_idx" ON "session_data"("session_id"); + +-- CreateIndex +CREATE UNIQUE INDEX "report_report_id_key" ON "report"("report_id"); + +-- CreateIndex +CREATE INDEX "report_user_id_idx" ON "report"("user_id"); + +-- CreateIndex +CREATE INDEX "report_website_id_idx" ON "report"("website_id"); + +-- CreateIndex +CREATE INDEX "report_type_idx" ON "report"("type"); + +-- CreateIndex +CREATE INDEX "report_name_idx" ON "report"("name"); + +-- EventData migration +UPDATE "event_data" +SET string_value = number_value +WHERE data_type = 2; + +UPDATE "event_data" +SET string_value = CONCAT(REPLACE(TO_CHAR(date_value, 'YYYY-MM-DD HH24:MI:SS'), ' ', 'T'), 'Z') +WHERE data_type = 4; \ No newline at end of file diff --git a/queries/analytics/eventData/saveEventData.ts b/queries/analytics/eventData/saveEventData.ts index c889955f..f30ceb90 100644 --- a/queries/analytics/eventData/saveEventData.ts +++ b/queries/analytics/eventData/saveEventData.ts @@ -37,8 +37,13 @@ async function relationalQuery(data: { websiteEventId: eventId, websiteId, eventKey: a.key, - stringValue: a.value.toString(), - numericValue: a.dynamicDataType === DATA_TYPE.number ? a.value : null, + stringValue: + a.dynamicDataType === DATA_TYPE.number + ? parseFloat(a.value).toFixed(4) + : a.dynamicDataType === DATA_TYPE.date + ? a.value.split('.')[0] + 'Z' + : a.value.toString(), + numberValue: a.dynamicDataType === DATA_TYPE.number ? a.value : null, dateValue: a.dynamicDataType === DATA_TYPE.date ? new Date(a.value) : null, dataType: a.dynamicDataType, })); diff --git a/queries/analytics/pageview/getPageviewFunnel.ts b/queries/analytics/pageview/getPageviewFunnel.ts index 7305e545..bfd921c1 100644 --- a/queries/analytics/pageview/getPageviewFunnel.ts +++ b/queries/analytics/pageview/getPageviewFunnel.ts @@ -91,7 +91,7 @@ async function clickhouseQuery( count(*) AS count FROM ( SELECT session_id, - windowFunnel({window:UInt32}) + windowFunnel({window:UInt32}, 'strict_increase') ( created_at ${columnsQuery} diff --git a/queries/analytics/session/saveSessionData.ts b/queries/analytics/session/saveSessionData.ts index 79104270..192053f1 100644 --- a/queries/analytics/session/saveSessionData.ts +++ b/queries/analytics/session/saveSessionData.ts @@ -20,12 +20,12 @@ export async function saveSessionData(data: { sessionId, key: a.key, stringValue: - a.dynamicDataType === DATA_TYPE.string || - a.dynamicDataType === DATA_TYPE.boolean || - a.dynamicDataType === DATA_TYPE.array - ? a.value - : null, - numericValue: a.dynamicDataType === DATA_TYPE.number ? a.value : null, + a.dynamicDataType === DATA_TYPE.number + ? parseFloat(a.value).toFixed(4) + : a.dynamicDataType === DATA_TYPE.date + ? a.value.split('.')[0] + 'Z' + : a.value.toString(), + numberValue: a.dynamicDataType === DATA_TYPE.number ? a.value : null, dateValue: a.dynamicDataType === DATA_TYPE.date ? new Date(a.value) : null, dataType: a.dynamicDataType, }));