Pregunta

Básicamente, estoy preguntando lo mismo que en este Pregunta Pero para la Biblioteca Python Cassandra, Pycassa.

Diga que tiene un tipo de material compuesto que almacena datos como este:

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

Entonces, sé que puedo cambiar fácilmente a base de la primera parte del tipo compuesto haciendo:

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

Pero si solo quiero el Finalscore, supongo que podría hacerlo:

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

para obtener:

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

pero en su lugar, obtengo:

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

igual que la primera llamada.

¿Estoy haciendo algo mal? ¿Debería este trabajo? ¿O hay alguna sintaxis utilizando el cf.get (... columnas= [('20120216', 'Finalscore')])? Lo intenté también y obtuve una excepción.

Según http://www.datatax .com / dev / blog / introducción a compuesto-columns-part-1 , debería poder hacer algo como este ...

gracias

¿Fue útil?

Solución

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top