Domanda

Fondamentalmente sto chiedendo la stessa cosa di questo Domanda Ma per la biblioteca Python Cassandra, Pyassa.

Diciamo di avere un tipo composito che memorizza i dati come questo:

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

Quindi, so che posso facilmente tagliare la base della prima parte del tipo composito facendo:

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

Ma se voglio solo i finalscore, presumerei che potrei fare:

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

per ottenere:

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

Ma invece, ottengo:

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

come la prima chiamata.

Sto facendo qualcosa di sbagliato? Dovrebbe funzionare? O c'è qualche sintassi usando il cf.get (... colonne= [('20120216', 'Finalscore')])? Ho provato anche questo e ho avuto un'eccezione.

Secondo http://www.datastax .com / dev / blog / introduzione-to-composite-colonne-parte-1 , dovrei essere in grado di fare qualcosa come questo ...

Grazie

È stato utile?

Soluzione

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').

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top