ЕСЛИ условие на основе подсчета в Кассанде - PullRequest
0 голосов
/ 04 января 2019

Мне нужен запрос для группы вместе с условием if на основе количества, и у меня есть рабочий запрос в MySQL ниже. select notification,subject,max(time) as recent,value,IF(COUNT(event.value) > 1, 'Abnormal', 'Normal') AS NewResult from event where time between date_add(now(), interval -10 minute) and now() group by device,value order by time;

Есть ли какой-либо соответствующий запрос в Кассандре для этого.

1 Ответ

0 голосов
/ 04 января 2019

Нет. Это потребует фильтрации и, по крайней мере, сбора разброса по всем диапазонам токенов (если используются индексы) и, вероятно, потребует полного сканирования таблицы. Оба они плохо масштабируются, поэтому практически не поддерживаются, поэтому более сложные выражения вообще не допускаются в синтаксисе cql.

В Кассандре вы разрабатываете свои таблицы вокруг своих запросов, а не разрабатываете свои запросы вокруг своих данных. Возможно, вы действительно захотите использовать spark или hadoop для более сложной массовой обработки, но на самом деле вы не используете базу данных, для которой она предназначена. Если это всего лишь один прогон adhoc, вы можете написать клиентское приложение, которое обрабатывает все данные, объединяет их и фильтрует.

Если у вас есть возможность рассмотреть вопрос об изменении модели данных, если это необходимо для чтения.

...