2017-02-21 3 views
1

J'ai une table avec une colonne timestamp, et je voudrais manipuler les valeurs de cette colonne. Par exemple, je dois faire quelque chose le long de la ligne:Comment manipuler les colonnes timestamp dans Apache Cassandra

UPDATE mytable SET datetimecolumn = datetimecolumn + 10mins

Comment est-il fait dans Apache Cassandra?

MISE À JOUR: La réponse semble être "vous ne pouvez pas". Mais la réponse choisie est la plus proche que nous pouvons avoir apparemment.

Répondre

3

Vous pouvez effectuer une requête semblable à celle-ci, uniquement si le type de données est compteur.

En utilisant contre:

Un compteur est une colonne spéciale utilisée pour stocker un nombre qui est changé par incréments. Par exemple, vous pouvez utiliser une colonne de compteur pour compter le nombre de fois qu'une page est affichée.

Définissez un compteur dans une table dédiée uniquement et utilisez le type de données du compteur. Vous ne pouvez pas indexer, supprimer ou rajouter une colonne de compteur. Toutes les colonnes sans compteur de la table doivent être définies en tant que partie de la clé primaire.

Exemple:

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

Ici, vous devez utiliser datetimecolumn valeur en milliseconde.
Pour la première fois, vous devez utiliser la requête de mise à jour avec le temps en valeur milliseconde, disons 1487686182403

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

maintenant matable avec pk = 1 contient datetimecolumn = valeur 1487686182403.

Si vous voulez incrémenter datetimecolumn par 10 minutes (600000 milliseconde)

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

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

1

lecture-avant-écriture est un anti-modèle en cassandra. Vous avez manipulé la valeur côté client et mis à jour comme d'habitude; En d'autres termes: vous devez rechercher (sélectionner) la valeur, faire des changements (incrémenter de 10min) et mettre à jour à Cassandra la nouvelle valeur.

+0

Je ne sais pas si je comprends bien votre réponse. Pourriez-vous élaborer? – adrin