Question

Fondamentalement, je pose la même chose que dans Ceci Question mais pour la bibliothèque Python Cassandra, Pycassa.

permet de dire que vous avez un type composite stockant des données telles que ceci:

[20120228:finalscore] = '31-17'
[20120228:halftimescore]= '17-17'
[20120221:finalscore] = '3-14'
[20120221:halftimescore]= '3-0'
[20120216:finalscore] = '54-0'
[20120216:halftimescore]= '42-0'

Alors, je sais que je peux facilement trancher la première partie du type composite en faisant:

>>> cf.get('1234', column_start('20120216',), column_finish('20120221',))
OrderedDict([((u'20120216', u'finalscore'), u'54-0'),
((u'20120216', u'halftimescore'), u'42-0')])

Mais si je veux seulement que le finalscore, je suppose que je pouvais faire:

>>> cf.get('1234', column_start('20120216', 'finalscore'),
column_finish('20120221', 'finalscore'))

Pour obtenir:

OrderedDict([((u'20120216', u'finalscore'), u'54-0')])

Mais au lieu de cela, je reçois:

OrderedDict([((u'20120216', u'finalscore'), u'54-0'),
((u'20120216', u'halftimescore'), u'42-0')])

même que le 1er appel.

Est-ce que je fais quelque chose de mal? Devrait-il fonctionner? Ou existe-t-il une syntaxe à l'aide de cf.get (... Colonnes= [('20120216', 'Finalscore')])? J'ai essayé ça aussi et j'ai eu une exception.

Selon http://www.dataxe .Com / dev / blog / Introduction-To-Composite-colonnes-Part-1 , je devrais pouvoir faire quelque chose comme ça ...

merci

Était-ce utile?

La solution

If know all the components of the composite column then you should the 'columns' option:

cf.get('1234', columns=[('20120216', 'finalscore')])

You said you got an error trying to do this, but I would suggest trying again. It works fine for me.

When you are slicing composite columns you need to think about how they are sorted. Composite columns sort starting first with the left most component, and then sorting each component toward the right. So In your example the columns would look like this:

+------------+---------------+------------+---------------+------------+----------------+
| 20120216   | 20120216      | 20120221   | 20120221      | 20120228   | 20120228       |
| finalscore | halftimescore | finalscore | halftimescore | finalscore | halftimescore  |
+------------+---------------+------------+---------------+------------+----------------+

Thus when you slice from ('20120216', 'finalscore') to ('20120221', 'finalscore') you get both values for '20120216'. To make your query work as you want it to you could change the column_finish to ('20120216', 'halftimescore').

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top