1) Переделал домашку в Типы таблиц под ON CLUSTER.

2) Сделал домашку в Типы данных - Задание 1
This commit is contained in:
Bonifatsiy
2026-02-26 01:54:22 +04:00
parent f8bf5e5b06
commit c5a5df7c25
2 changed files with 44 additions and 9 deletions
@@ -0,0 +1,26 @@
--Типы данных
--Задача 1
CREATE TABLE raw_data
ON CLUSTER clickhouse_cluster
(
user_id String,
balance String,
created_at String
) ENGINE = MergeTree ORDER BY tuple();
SELECT DISTINCT
toDecimal64OrNull(balance, 2) AS balance_decimal,
toDateTime64OrNull(created_at, 3) AS created_at_date
FROM raw_data
WHERE
toDecimal64OrNull(balance, 2) IS NOT NULL
AND toDateTime64OrNull(created_at, 3) IS NOT NULL
/*
CAST(balance AS Decimal(10, 2)) - этом случае будет ошибка, так как данный метод не поддеживает NULL
Следующие два метода по сути своей преобразование типа данных с условием ИЛИ, то есть:
toDecimal64OrNull(balance, 2) - в этом методе на выходе будут корректные данные, в противном случае NULL
toDecimal64OrZero(balance, 2) - аналогично с NULL, только будет ноль.
*/
@@ -1,6 +1,9 @@
--Задача 1: Создай таблицу page_views --Задача 1: Создай таблицу page_views
DROP TABLE page_views;
CREATE TABLE page_views ( CREATE TABLE page_views
ON CLUSTER clickhouse_cluster
(
user_id UInt64, user_id UInt64,
url String, url String,
view_time DateTime view_time DateTime
@@ -11,7 +14,9 @@ ORDER BY (user_id, view_time);
--Задача 2: Создай таблицу users --Задача 2: Создай таблицу users
CREATE TABLE users ( CREATE TABLE users
ON CLUSTER clickhouse_cluster
(
id UInt64, id UInt64,
name String, name String,
updated_at DateTime updated_at DateTime
@@ -21,7 +26,9 @@ ORDER BY id;
-- Задача 3: Создай таблицу region_sales -- Задача 3: Создай таблицу region_sales
CREATE TABLE region_sales ( CREATE TABLE region_sales
ON CLUSTER clickhouse_cluster
(
region String, region String,
date Date, date Date,
sales UInt64 sales UInt64
@@ -30,17 +37,19 @@ ENGINE = SummingMergeTree()
PARTITION BY toYYYYMM(date) PARTITION BY toYYYYMM(date)
ORDER BY (region, date); ORDER BY (region, date);
--Задача 4.1: Создай таблицу user_metrics --Задача 4: Создай таблицу user_metrics
CREATE TABLE user_metrics ( CREATE TABLE user_metrics
ON CLUSTER clickhouse_cluster
(
region String, region String,
avg_age_state AggregateFunction(avg, UInt8), avg_age_state AggregateFunction(avg, UInt8),
active_users_state AggregateFunction(uniq, UInt64) active_users_state AggregateFunction(uniq, UInt64)
) )
ENGINE = AggregatingMergeTree() ENGINE = AggregatingMergeTree() --Подзадача 4.2
ORDER BY region; ORDER BY region; --Подзадача 4.3
--Задача 4.3: - Вставь данные и Читай их через `avgMerge()` и `uniqMerge()` --Подзадача 4.4: - Вставь данные и Читай их через `avgMerge()` и `uniqMerge()`
INSERT INTO user_metrics INSERT INTO user_metrics
SELECT SELECT
@@ -61,7 +70,7 @@ FROM
) )
GROUP BY region; GROUP BY region;
--Задача 4.4: - Читай их через `avgMerge()` и `uniqMerge()` --Подзадача 4.5: - Читай их через `avgMerge()` и `uniqMerge()`
SELECT SELECT
region, region,