首页 > 解决方案 > 如何在 clickhouse 表上使用 TTL?

问题描述

阅读文档后,我发现 TTL 功能对我来说非常有用。但是,我无法构造有效的 SQL 来使用它。

我怎么做:

CREATE TABLE t1 (
  name String, 
  date DateTime default now(),
  number UInt64 default 0 TTL date + INTERVAL 1 DAY 
) Engine MergeTree() ORDER BY name;

这给出了如下错误:

Syntax error: failed at position 92 (line 4, col 27):
...[copy of my code here]
Expected one of: NOT, LIKE, AND, OR, IN, BETWEEN, COMMENT, CODEC, token, IS, NOT LIKE, NOT IN, GLOBAL IN, GLOBAL NOT IN, ClosingRoundBracket, Comma, QuestionMark

我也尝试过使用表范围的 TTL:

CREATE TABLE t1 (
  name String, 
  date DateTime default now(),
  number UInt64 default 0  
) Engine MergeTree() ORDER BY name TTL date + INTERVAL 1 DAY;

这也会导致错误。

据我所知,我正在根据文档(https://clickhouse.yandex/docs/en/operations/table_engines/mergetree/#table_engine-mergetree-creating-a-table)做所有事情,但我仍然无法使用此功能。

我正在使用服务器版本 19.5.3 修订版 54417。

请提供有关如何使用 TTL 功能的任何示例或想法!

标签: ttlclickhouse

解决方案


表和列的 TTL 尚未发布,将在 19.6.x 中提供。文档反映了最先进的“大师”状态,而不是最新版本。这当然令人困惑。为了查看特定版本,您可以参考特定主要版本的文档,如下所示:https ://clickhouse.yandex/docs/v19.5/en/operations/table_engines/mergetree/


推荐阅读