嵌套json插入

hs1ihplo  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(364)

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"} }

我们需要在cassandra中插入下表的结构

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中。
如果我需要提供更多信息,请告诉我。

5hcedyr0

5hcedyr01#

cassandra尝试在您提供的非结构化行周围放置一些结构。您没有指定“car”,这实际上是您的reqid“所属的”,所以它会爆炸。最好的选择是创建一个类型(以便可以与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本身是非结构化的。这意味着您不能在嵌套文档中有一些具有不同字段的“行”,因为它将失败。你需要有“车”,你需要有所有Cassandra行“regid”,否则它会失败。如果这似乎不适合您,您可能需要考虑使用文档数据库(即mongo)。
根据您的更新,这里是您提供的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

相关问题