Работа над ошибками по: 'Типы таблиц', 'View и Distribute движки'.
This commit is contained in:
+15
-16
@@ -18,9 +18,9 @@ ENGINE = Distributed(
|
||||
'clickhouse_cluster',
|
||||
'mnoskov',
|
||||
'logs',
|
||||
rand()
|
||||
user_id
|
||||
);
|
||||
-- параметр rand() - это ключ распределния как я понял. Если стоит он, то распределяются данные случайно, если укащать колонку, то по колонке.
|
||||
-- параметр rand() - это ключ распределния между шардами. Если стоит он, то распределяются данные случайно, если укащать колонку, то по колонке.
|
||||
|
||||
|
||||
-- Задание 2
|
||||
@@ -54,16 +54,15 @@ LIMIT 100;
|
||||
|
||||
-- Задание 3
|
||||
|
||||
-- тут вообще жопа какая-то. Если смотреть на пример создания MV, то выдает ошибку мол engine указывать нельзя. Полез в документацию, там сказано что после указания имени mv нужно добавлять TO ... но все равно выдется ошибка.
|
||||
-- этот способ я в хабре нашел
|
||||
CREATE TABLE mnoskov.raw_events
|
||||
ON CLUSTER clickhouse_cluster
|
||||
(
|
||||
event_time DateTime,
|
||||
user_id UInt32,
|
||||
event_type String
|
||||
event_time DateTime,
|
||||
user_id UInt32,
|
||||
event_type String
|
||||
)
|
||||
ENGINE = MergeTree
|
||||
ORDER BY (event_time, user_id);
|
||||
ENGINE=MergeTree
|
||||
ORDER BY(event_time,user_id);
|
||||
|
||||
CREATE TABLE mnoskov.agr_clicks_per_day
|
||||
ON CLUSTER clickhouse_cluster
|
||||
@@ -71,17 +70,17 @@ ON CLUSTER clickhouse_cluster
|
||||
event_date Date,
|
||||
count UInt64
|
||||
)
|
||||
ENGINE = MergeTree
|
||||
ENGINE=SummingMergeTree
|
||||
ORDER BY event_date;
|
||||
|
||||
CREATE MATERIALIZED VIEW mnoskov.mv_clicks_per_day TO mnosokv.agr_clicks_per_day AS
|
||||
CREATE MATERIALIZED VIEW mnoskov.mv_clicks_per_day
|
||||
ON CLUSTER clickhouse_cluster
|
||||
TO mnoskov.agr_clicks_per_day AS
|
||||
SELECT
|
||||
toDate(event_time) AS event_date,
|
||||
count(*) AS count
|
||||
FROM
|
||||
mnoskov.raw_events
|
||||
GROUP BY
|
||||
event_date;
|
||||
FROM mnoskov.raw_events
|
||||
GROUP BY event_date;
|
||||
|
||||
SELECT * FROM mnoskov.raw_events;
|
||||
SELECT * FROM mnoskov.agr_clicks_per_day;
|
||||
-- ничего у меня получилось, и с SummingMergeTree ни с MergeTree. Как очень непонятно материализованные таблицы работают. Если делать как в теории в инфре, то тоже ничего не работает.
|
||||
@@ -13,18 +13,24 @@ ENGINE = ReplicatedMergeTree(
|
||||
ORDER BY tuple();
|
||||
|
||||
SELECT
|
||||
user_id,
|
||||
balance,
|
||||
created_at
|
||||
FROM (
|
||||
SELECT
|
||||
user_id,
|
||||
toDecimal64OrNull(balance,2) AS balance,
|
||||
toDateTime64OrNull(created_at, 3) AS created_at
|
||||
FROM
|
||||
mnoskov.raw_data1
|
||||
)
|
||||
WHERE
|
||||
balance IS NOT NULL AND created_at IS NOT NULL;
|
||||
|
||||
|
||||
-- Задание 2
|
||||
|
||||
CREATE TABLE events
|
||||
CREATE TABLE mnoskov.events
|
||||
ON CLUSTER clickhouse_cluster (
|
||||
event_id String,
|
||||
event_date String, -- форматы: "2023-01-01", "01.02.2023", "invalid"
|
||||
@@ -42,18 +48,16 @@ SELECT * FROM mnoskov.events;
|
||||
|
||||
SELECT
|
||||
event_id,
|
||||
toDate(parseDateTimeBestEffortOrNull(event_date)) AS event_dates,
|
||||
CASE
|
||||
WHEN toDayOfMonth(parseDateTimeBestEffortOrNull(event_time)) = 1 THEN toHour(parseDateTimeBestEffortOrNull(event_time))
|
||||
ELSE (toDayOfMonth(parseDateTimeBestEffortOrNull(event_time)) - 1) * 24 + toHour(parseDateTimeBestEffortOrNull(event_time))
|
||||
END AS event_times,
|
||||
toDateTime(parseDateTimeBestEffortOrNull(event_date)) + toIntervalHour(event_times) AS event_datetime
|
||||
FROM
|
||||
mnoskov.events
|
||||
event_datetime
|
||||
FROM (
|
||||
SELECT
|
||||
event_id,
|
||||
parseDateTimeBestEffortOrNull(concat(event_date, ' ', event_time)) AS event_datetime
|
||||
FROM
|
||||
mnoskov.events
|
||||
)
|
||||
ORDER BY
|
||||
event_dates;
|
||||
-- Все преобразования с to... и parse... нашел тут https://clickhouse.com/docs/ru/sql-reference/functions/type-conversion-functions#toIntervalMonth.
|
||||
-- explain analyze не работает, потэому не могу посмотреть насколько это эффективно, НО главное сам запрос работает.
|
||||
event_datetime;
|
||||
|
||||
|
||||
-- Задание 3
|
||||
@@ -73,7 +77,7 @@ ORDER BY
|
||||
|
||||
SELECT
|
||||
user_id,
|
||||
count(*)
|
||||
count(*) as user_actions_cnt
|
||||
FROM
|
||||
mnoskov.user_activity
|
||||
WHERE
|
||||
|
||||
Reference in New Issue
Block a user