Исключение при фильтрации system.parts (ClickHouse) по разделам - PullRequest
0 голосов
/ 17 октября 2019

Я пытался выполнить удаление разделов в таблице 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 считывал условие фильтра как String, а не как выражение. Я не могу воссоздать таблицу.

Я отправляю запрос в виде параметра 'query' URL-адреса, и опция с partition= '\'d2019-10-11\'' успешно работает в версии 1.1.54385.

Также столбцы разделов в системе.parts в версии 1.1.54385 содержит 'd2019-10-11' среди system.parts в версии 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

1 Ответ

0 голосов
/ 17 октября 2019

Зачем вам нужно report_type_date в качестве String? Это действительно странно.

Я не могу воспроизвести проблему

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 │
└─────────────┴────────────────────────────────────────┴──────────────────────────────────┘

Раздел - это строка, вам не нужно экранировать кавычки.

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
...