Je cherche un moyen de récupérer des enregistrements triés à partir d'une table hdf
. Voici un MWE python:Comment récupérer des enregistrements triés à partir d'une table hdf
import tables
import numpy as np
class Measurement(tables.IsDescription):
time = tables.Float64Col()
value = tables.Float64Col()
h5 = tables.open_file('test.hdf', 'w')
h5.create_table('/', 'test', Measurement)
table = h5.root.test
data = np.array([(0, 6), (5, 1), (1, 8)], dtype=[('time', '<f8'), ('value', '<f8')])
table.append(data)
table.cols.time.createCSIndex()
J'aimerais maintenant récupérer tous les dossiers avec time > 0
, triées par time
. Si je fais:
table.read_where('time > 0')
il obtient:
array([(5.0, 1.0), (1.0, 8.0)], dtype=[('time', '<f8'), ('value', '<f8')])
qui ne sont pas triées par time
. Si j'essaye d'employer read_sorted
alors j'obtiens la table entière au lieu d'un sous-ensemble (il n'y a aucun argument de condition à read_sorted
).
Quelle est la pratique courante? Devrais-je m'assurer que mes tables sont stockées triées dans la base de données? Ou devrais-je trier moi-même l'ensemble récupéré après read_where
?