私は約4,000のカンドンドラの質問を処理する必要があります。 ResultSetをジェネレータに変換して、メモリのフットプリントを低く抑えます。ジェネレータの各行の中で、私は約50のいくつかのフィールドにのみ関心があります。DataStax python cassandra-driverを使用して行の値をフィルタリングすることは可能ですか?
私はCQLの値フィールドに直接フィルタをかけることはできませんが、DataStax Python Cassandraドライバには何かが組み込まれていますか?またはそれは私が
def make_gen(response):
for row in response:
yield row.value.field1, row.value.filed2
すなわち発電機を構築するとき、私は、現時点では、直接クエリを発行していますが、同時クエリと準備された文で、後にベースのアプローチをモデル化するために移動するだけでこれを行うために、より理にかなって。要求を発行しているコードは非常に基本的です。
sess = connect_cas(env)
for user in users:
q = 'select * from table ' + \
'where key1 = {} and '.format(key_1) + \
'key2 = {} and '.format(key_2) + \
'sample_time > {} '.format(t1) + \
'sample_time < {} '.format(t2)
resp_gen = make_gen(sess.execute(q)) # just a yield json.loads(Row.value)
for resp in resp_gen:
if field in resp:
// process data from this field
私はこの「フィールド」が存在する行のみを気にします。私はこの条件が真であるときにのみデータを生成するように発電機を更新しましたが、これをより効率的に行うDataStaxドライバに何かが組み込まれていれば、4,000のクエリで節約額が加算されます。
リクエストしているコードを表示してください - あなたは 'Model'ベースのアプローチを使用していますか?または直接クエリですか? –