Кассандра пытается поместить какую-то структуру вокруг неструктурированной строки, которую вы указали. Вы не указали «машину», которая действительно принадлежит вашему требованию, поэтому она бомбит. Лучший вариант - создать тип (чтобы его можно было использовать с определением PK), а затем создать таблицу следующим образом:
create type cartype (
regId text
);
create table car_appt (
event_type text,
car frozen<cartype>,
timestamp timestamp,
primary key (event_type, car)
);
Как только все будет готово, все готово.
insert into car_appt JSON '{ "Event_Type": "Booked", "Car": { "RegId": "6fa0b439-0782-49e8-9ac3-78c275470516" } }';
select * from car_appt;
event_type | car
------------+-------------------------------------------------
Booked | {regid: '6fa0b439-0782-49e8-9ac3-78c275470516'}
Также
select car.regId from car_appt;
car.regid
--------------------------------------
6fa0b439-0782-49e8-9ac3-78c275470516
Как я уже сказал, это создает некоторую структуру вокруг ваших данных, где само по себе json неструктурировано. Это означает, что у вас не может быть «строк» с разными полями во вложенном документе, так как это не удастся. Вам нужно иметь «машину», и вам нужно иметь «regId» для всех рядов кассандры, иначе это не удастся. Если вам кажется, что это не очень хорошо работает, вы можете вместо этого рассмотреть базу данных документов (т. Е. Пн go).
Из вашего обновления вы увидите 6 предоставленных вами вкладышей. Кроме порядка и заголовка столбца regid, он выглядит одинаково.
select event_type, car.regId from car_appt;
event_type | car.regid
------------+--------------------------------------
Booked | 0961dbac-297d-424c-96ce-9f37f1707cd9
Booked | 6fa0b439-0782-49e8-9ac3-78c275470516
Booked | b32f7b0b-d077-44c4-a454-519a3f82c759
Complete | 0961dbac-297d-424c-96ce-9f37f1707cd9
Complete | 6fa0b439-0782-49e8-9ac3-78c275470516
Complete | b32f7b0b-d077-44c4-a454-519a3f82c759