Кассандра - Вложенная Json Вставка - PullRequest
1 голос
/ 13 января 2020

DSE 6.7 CentOS 6.7

У нас есть данные в JSON в следующем формате -

{ "Event_Type": "Booked", "Car": { "RegId": "0961dbac-297d-424c-96ce-9f37f1707cd9" } }

{ "Event_Type": "Complete", "Car": { "RegId": "0961dbac-297d-424c-96ce-9f37f1707cd9" } }

{ "Event_Type": "Booked", "Car": { "RegId": "b32f7b0b-d077-44c4-a454-519a3f82c759" } }

{ "Event_Type": "Complete", "Car": {"RegId": "b32f7b0b-d077-44c4-a454-519a3f82c759"} }

{ "Event_Type": "Booked", "Car": { "RegId": "6fa0b439-0782-49e8-9ac3-78c275470516" } }

{ "Event_Type": "Complete", "Car": { "RegId": "6fa0b439-0782-49e8-9ac3-78c275470516"} }

нам нужно вставить в кассандру со структурой таблицы ниже

CREATE TABLE IF NOT EXISTS "car"."car_appt" (

"event_type" text,

"RegId" uuid,

"timetamp" timestamp

);

Требуемый вывод

Event_Type      RegId

Booked          0961dbac-297d-424c-96ce-9f37f1707cd9
Complete        0961dbac-297d-424c-96ce-9f37f1707cd9
Booked          b32f7b0b-d077-44c4-a454-519a3f82c759
Complete        b32f7b0b-d077-44c4-a454-519a3f82c759

Я не могу вставить вышеуказанное json, поскольку оно находится во вложенном json.

Дайте мне знать, если мне нужно предоставить больше информации.

1 Ответ

1 голос
/ 13 января 2020

Кассандра пытается поместить какую-то структуру вокруг неструктурированной строки, которую вы указали. Вы не указали «машину», которая действительно принадлежит вашему требованию, поэтому она бомбит. Лучший вариант - создать тип (чтобы его можно было использовать с определением 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...