Pergunta

Basicamente estou perguntando a mesma coisa que em essa questão mas para a biblioteca Python Cassandra, PyCassa.

Digamos que você tenha um tipo composto armazenando dados 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'

Então, eu sei que posso facilmente fatiar com base na primeira parte do tipo composto fazendo:

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

Mas se eu quiser apenas a pontuação final, presumo que poderia fazer:

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

Obter:

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

Mas em vez disso, recebo:

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

Igual à 1ª chamada.

Estou fazendo algo errado?Isso deveria funcionar?Ou existe alguma sintaxe usando o cf.get(...colunas=[('20120216', 'pontuação final')]) ?Eu tentei isso também e recebi uma exceção.

De acordo com http://www.datastax.com/dev/blog/introduction-to-composite-columns-part-1, eu deveria ser capaz de fazer algo assim ...

Obrigado

Foi útil?

Solução

Se você conhece todos os componentes do pilar composto, então você deve 'columns' opção:

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

Você disse que ocorreu um erro ao tentar fazer isso, mas sugiro tentar novamente.Isso funciona bem para mim.

Ao fatiar colunas compostas, você precisa pensar em como elas são classificadas.As colunas compostas são classificadas começando primeiro com o componente mais à esquerda e depois classificando cada componente à direita.Então, no seu exemplo, as colunas ficariam assim:

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

Assim, quando você corta de ('20120216', 'finalscore') para ('20120221', 'finalscore') você obtém os dois valores para '20120216'.Para fazer sua consulta funcionar como você deseja, você pode alterar o column_finish para ('20120216', 'halftimescore').

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top