1) Переделал домашку в Типы таблиц под ON CLUSTER.
2) Сделал домашку в Типы данных - Задание 1
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
Reference in New Issue
Block a user