2017-08-04 2 views
1

私はカサンドラテーブルを変更したいと思います。私は追加のプライマリキーを追加する必要がある場合、私は別のテーブルを作成する必要があることを知っています。例えば、私はこのテーブルChanginコンポジットキーカサンドラ

 create table sample1 (
       p1 int, 
       p2 timestamp, 
       c1 text, 
       c2 text, 
       c3 text, 
       c4 text, 
       c5 text, 
       c6 text, 
       x1 int, 
       x2 int, 
       x3 int 
       PRIMARY KEY((p1,p2),c1,c2,c3,c4,c5,c6)  
     ); 

この状況が再び起こったであろうに、このテーブル

 create table sample1 (
       p1 int, 
       p2 timestamp, 
       c1 text, 
       c2 text, 
       c3 text, 
       c4 text, 
       x1 int, 
       x2 int, 
       x3 int 
       PRIMARY KEY((p1,p2),c1,c2,c3,c4)  
     ); 

をオンにしたい、私は再びこのテーブルを変更する必要があります。

私はこのようなテーブルを作成することを検討しています。それが最善のアプローチだと思いますか?それとも別の方法がありますか?

create table sample1 (
      p1 int, 
      p2 timestamp, 
      combined_six_field text, 
      c1 text, 
      c2 text, 
      c3 text, 
      c4 text, 
      c5 text, 
      c6 text, 
      x1 int, 
      x2 int, 
      x3 int 
      PRIMARY KEY((p1,p2), combined_six_field)  
    ); 
+0

?選択したクエリのサンプルを表示してください。 –

+0

Select * from sample1ここで、p1 = xとp2 = y他のフィールドを一意の情報に使用します。 –

+0

クラスタリングキーで照会する必要はありませんか? 'select * from sample1 'のように、p1 = x、p2 = y、c1 =' z ''のようになります。 –

答えて

1

フリーズマップをクラスタリング列として使用できます。

例:

CREATE TABLE sample1 (
     p1 int, 
     p2 timestamp, 
     c frozen<map<text, text>>, 
     x1 int, 
     x2 int, 
     x3 int 
     PRIMARY KEY((p1,p2), c)  
); 

挿入例:使用する選択クエリのどのような種類

INSERT INTO sample1(pk1, pk2, c, x1, x2, x3) VALUES (
    1, 
    toTimestamp(now()), 
    {'c1' : 'v1', 'c2' : 'v2', 'c3' : 'v3'}, 
    10, 
    100, 
    1000 
); 

INSERT INTO sample1(pk1, pk2, c, x1, x2, x3) VALUES (
    2, 
    toTimestamp(now()), 
    {'c1' : 'v1', 'c2' : 'v2', 'c3' : 'v3', 'c4' : 'v4', 'c5' : 'v5', 'c6' : 'v6'}, 
    20, 
    200, 
    2000 
); 
+0

あなたの答えに感謝します。 @ashrafulイスラム –

+1

@ user2599860答えがあなたのために働くなら、答えは –

+0

でした。もう一度@Ashrafulイスラム教ありがとう –

関連する問題