【发布时间】:2017-01-02 09:06:39
【问题描述】:
我想通过与离散值列表匹配的列在 HDF5 文件中进行选择。但是,据说我的查询包含几十个值和可能几个不同的键列,所以我不想使用内核超长查询,例如:
((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()
【问题讨论】: