Я хочу выбрать в файле HDF5 столбец, соответствующий дискретному списку значений. Однако, предположительно мой запрос содержит несколько десятков значений и, возможно, несколько ключевых столбцов, так что я не хочу использовать в ядре супер длинный запрос, такие как:Pytables выбирает строки на основе списка совпадающих значений столбца
((key1=="value1")|(key1=="value2")) & ((key2=="value3")|(key1=="value4"))
Однако, это все еще должно быть сделано в ядре каким-то образом, для соображений скорости (я также индексирую столбцы и сохраняя сортировку моей огромной таблицы). Вот некоторые помощник кода, где я соответствовать одному одно значение:
import string
import random
import tables as pt
class KeyValue(pt.IsDescription):
key = pt.StringCol(itemsize=30, dflt=" ", pos=0)
value = pt.UInt16Col(dflt=0, pos=1)
file = pt.open_file("test.hdf5", "w", title=title)
m = file.create_table("/", "test", KeyValue)
for j in range(20):
values = []
for i in range(100000):
key = "".join(random.sample(string.ascii_uppercase, 5))
value = random.randint(0, 1000000)
values.append((key, value))
m.append(values)
rows = file.root.test.read_where('key == b"AAAA"')
file.close()