Можно ли установить для столбца значение другого столбца в CQL?

Я новичок в cassandra, и я пытаюсь создать новый столбец, содержимое которого основано на другом столбце.

Точнее, чего я хочу добиться, начиная со следующей таблицы:

Столбец А Столбец B 1 текст

Я хочу обновить получение таблицы:

Столбец А Столбец B СтолбецC 1 текст Значение столбца А +1

Я пытаюсь что-то вроде этого, после добавления столбца C, update table set columnC = columnA+1 ; но это дало мне ошибку

Поддерживаются только выражения вида X = X -.

Так что я попытался update table set columnC = columnA ; но даже это выдало мне ошибку

нет жизнеспособной альтернативы на входе ';' (обновить набор таблиц columnC=[columnA];)

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

Aaron 20.10.2022 16:19
Установка Apache Cassandra на Mac OS
Установка Apache Cassandra на Mac OS
Это краткое руководство по установке Apache Cassandra.
0
1
59
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Грамматика CQL не поддерживает этот тип операций, поскольку она не масштабируется.

Представьте, если бы у вас были миллиарды и миллиарды разделов на сотнях узлов. Для такой операции потребуется полное сканирование таблицы. И если бы у вас были миллионы одновременных пользователей, было бы трудно сделать обновления идемпотентными, поскольку разделы/строки не блокируются между моментом, когда вы читаете значение в столбце A и записываете его в столбец C.

Вам нужно будет написать для него приложение ETL, предпочтительно в Spark, чтобы оно могло эффективно перебирать разделы/строки. Ваше здоровье!

Другие вопросы по теме