2017-02-21 2 views
1

私はtimestamp列のテーブルを持っています。その列の値を操作したいと思います。例えば、私はラインに沿って何かをする必要があります。Apache Cassandraでタイムスタンプ列を操作する方法

UPDATE mytable SET datetimecolumn = datetimecolumn + 10mins

はどのようにそれは、Apache Cassandraの中で行われていますか?

更新日:答えは「できません」と思われます。しかし、選択された答えは私たちが明らかに得ることができる最も近いものです。

答えて

3

データ型がカウンタの場合にのみ、同様のクエリを実行できます。

カウンターを使用して:

カウンタが増分で変化する数を格納するために使用される特殊なカラムです。たとえば、カウンタ列を使用してページの表示回数をカウントすることができます。

専用テーブルにカウンタを定義し、カウンタデータタイプを使用します。カウンタ列のインデックス付け、削除、または再追加はできません。表の非カウンタ列はすべて、主キーの一部として定義する必要があります。

例:ここでは

CREATE TABLE mytable (
    pk1 int PRIMARY KEY, 
    datetimecolumn counter 
); 

あなたはミリ秒単位でdatetimecolumn値を使用する必要があります。初めて
は、あなたがdatetimecolumn = 1487686182403値が含まれているのは、PK = 1と1487686182403

UPDATE mytable SET datetimecolumn = datetimecolumn + 1487686182403 where pk1 = 1 

今すぐmytableは言わせミリ秒値の経時更新クエリを使用する必要があります。

あなたは10minsで(600000ミリ秒)datetimecolumnをインクリメントしたい場合

UPDATE mytable SET datetimecolumn = datetimecolumn + 600000 where pk1 = 1 

出典:https://docs.datastax.com/en/cql/3.1/cql/cql_using/use_counter_t.html

1

書き込み前書き込みは、カサンドラのアンチパターンです。あなたはクライアント側で値を操作し、いつものように更新しました。

つまり、値を検索(選択)し、変更(10分増分)し、新しい値をcassandraで更新する必要があります。

+0

私は私はあなたの答えを理解してかはわかりません。あなたは詳細を教えてください。 – adrin

関連する問題