даты в итоге оказывается дефолтным, хотя приходят корректные записи:
1 Distributed
CREATE TABLE user_state ON CLUSTER cluster
(
user_id String,
dt AggregateFunction(min, Date)
)
ENGINE = Distributed('cluster', 'db', '_user_state', cityHash64(account_id));
2 ReplicatedAggregatingMergeTree
CREATE TABLE _user_state ON CLUSTER cluster
(
user_id String,
dt AggregateFunction(min, Date)
)
ENGINE = ReplicatedAggregatingMergeTree('/clickhouse/tables/{shard}/_user_state', '{replica}')
PARTITION BY cityHash64(account_id)%24
ORDER BY (account_id);
3 Mat View
CREATE MATERIALIZED VIEW _mv_user_state ON CLUSTER cluster TO user_state
AS
SELECT user_id,
minState(toDate(server_time)) dt
FROM users
GROUP BY account_id;
4 Итоговый запрос
SELECT
user_id AS user_id,
minMerge(dt) AS dt_final
FROM user_state
GROUP BY user_id
LIMIT 5
┌─user_id──────────────────┬───dt_final─┐
│ 620f55ced13f47fc475b28a6 │ 1970-01-01 │
│ 5df6959cdcdf2cd6c405cc83 │ 1970-01-01 │
│ 61fdeeb7ce2cd6b0ad035076 │ 1970-01-01 │
│ 61f7455309b56780857f0434 │ 1970-01-01 │
│ 618985d7d024630dd98ed433 │ 1970-01-01 │
└──────────────────────────┴────────────┘
dt_final почему то заполняется дефолтным значением поля
А использование макросов {cluster}, {db}, {table} - это чем-то может, ммм, угрожать??? Это не касаемо вопроса.
по идее нет, безотносительно конкретного случая - другие таблицы живут спокойно если созданы с макросами
Что же не используете? Это так, к слову.
Это для NULL-value дефолтные значения, убедитесь, что на вход не Nullable знаяения попадают
я указал, что приходят корректные
Ок, 1969/01/01 - это корректное?
Обсуждают сегодня