按分区过滤 system.parts (ClickHouse) 时出现异常
Exception when filtering system.parts (ClickHouse) by partition
我试图在 table internet_users
中执行删除分区
带过滤器的查询
SELECT DISTINCT partition
FROM system.parts
WHERE database='users' and table='internet_users' and
partition= '\'d2019-10-11\''
我也试过了
partition= 'd2019-10-11'
partition= toString('d2019-10-11')
过滤无效或出现异常
DB::Exception: Missing columns: 'd2019' while processing query: '(d2019 - 10) - 11', required columns: 'd2019', source columns: '_dummy' (version 19.15.2.2 (official build))
请帮助我成功编写工作过滤器,ClickHouse 将过滤条件读取为字符串,而不是表达式。我无法重新创建 table.
我将请求作为 URL 'query' 参数和选项发送
partition= '\'d2019-10-11\''
在 1.1.54385 版本中成功运行。
另外在1.1.54385版本中system.parts中的分区列在19.15.2.2版本中system.parts中包含'd2019-10-11',在19.15.2.2版本中包含d2019-10-11,同样不带引号.
SHOW CREATE TABLE users.internet_users
CREATE TABLE users.internet_users (`type` Nullable(String), `report_type_date` String)
ENGINE = MergeTree
PARTITION BY report_type_date ORDER BY oper_date SETTINGS index_granularity = 8192
为什么需要 report_type_date 作为字符串?真的很奇怪。
我无法重现问题
ClickHouse client version 19.15.2.2 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 19.15.2 revision 54426.
CREATE TABLE internet_users (`type` Nullable(String), `report_type_date` String)
ENGINE = MergeTree PARTITION BY report_type_date ORDER BY tuple();
insert into internet_users values ('x', 'd2019-10-11');
SELECT
partition,
name,
partition_id
FROM system.parts
WHERE active AND (table = 'internet_users') AND (partition = 'd2019-10-11')
┌─partition───┬─name───────────────────────────────────┬─partition_id─────────────────────┐
│ d2019-10-11 │ 1d3f8b04c0f3f7654e4391f6c7b73352_1_1_0 │ 1d3f8b04c0f3f7654e4391f6c7b73352 │
└─────────────┴────────────────────────────────────────┴──────────────────────────────────┘
partition 是一个 String ,不需要筛选引号。
curl -q 'http://localhost:8123/?query=SELECT%20partition%20FROM%20system.parts%20WHERE%20active%20AND%20(table%20%3D%20%27internet_users%27)%20AND%20(partition%20%3D%20%27d2019-10-11%27)'
d2019-10-11
我试图在 table internet_users
中执行删除分区
带过滤器的查询
SELECT DISTINCT partition
FROM system.parts
WHERE database='users' and table='internet_users' and
partition= '\'d2019-10-11\''
我也试过了
partition= 'd2019-10-11'
partition= toString('d2019-10-11')
过滤无效或出现异常
DB::Exception: Missing columns: 'd2019' while processing query: '(d2019 - 10) - 11', required columns: 'd2019', source columns: '_dummy' (version 19.15.2.2 (official build))
请帮助我成功编写工作过滤器,ClickHouse 将过滤条件读取为字符串,而不是表达式。我无法重新创建 table.
我将请求作为 URL 'query' 参数和选项发送
partition= '\'d2019-10-11\''
在 1.1.54385 版本中成功运行。
另外在1.1.54385版本中system.parts中的分区列在19.15.2.2版本中system.parts中包含'd2019-10-11',在19.15.2.2版本中包含d2019-10-11,同样不带引号.
SHOW CREATE TABLE users.internet_users
CREATE TABLE users.internet_users (`type` Nullable(String), `report_type_date` String)
ENGINE = MergeTree
PARTITION BY report_type_date ORDER BY oper_date SETTINGS index_granularity = 8192
为什么需要 report_type_date 作为字符串?真的很奇怪。
我无法重现问题
ClickHouse client version 19.15.2.2 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 19.15.2 revision 54426.
CREATE TABLE internet_users (`type` Nullable(String), `report_type_date` String)
ENGINE = MergeTree PARTITION BY report_type_date ORDER BY tuple();
insert into internet_users values ('x', 'd2019-10-11');
SELECT
partition,
name,
partition_id
FROM system.parts
WHERE active AND (table = 'internet_users') AND (partition = 'd2019-10-11')
┌─partition───┬─name───────────────────────────────────┬─partition_id─────────────────────┐
│ d2019-10-11 │ 1d3f8b04c0f3f7654e4391f6c7b73352_1_1_0 │ 1d3f8b04c0f3f7654e4391f6c7b73352 │
└─────────────┴────────────────────────────────────────┴──────────────────────────────────┘
partition 是一个 String ,不需要筛选引号。
curl -q 'http://localhost:8123/?query=SELECT%20partition%20FROM%20system.parts%20WHERE%20active%20AND%20(table%20%3D%20%27internet_users%27)%20AND%20(partition%20%3D%20%27d2019-10-11%27)'
d2019-10-11