双时态HDF5
bth5的Python项目详细描述
双时态h5
基于HDF5(h5py)的通用双时态模型
型号
双时态的基本模型是一个可扩展的HDF5数据集
在具有命名列和不同数据类型的单个维度上
每列。在内存中,这将由numpy结构化数组表示。
我们将此结构称为Table
,用于这里的目的。在
请注意,HDF5在高层有自己的表数据结构
接口(hdf5 hl)。我们不会使用这里的高级表
有几个原因。首先,h5py
不支持HDF5
高层结构。第二,我们计划最终退出
具有重复数据消除缓存的值列。依赖于低层次的HDF5结构
给予我们未来的灵活性。在
表中的列如下:
transaction_id (uint64)
:这是一个单调整数,表示 导致写入此行的精确写入操作。多行可能 同时写入,所以这个值在行中不是唯一的 假设具有给定事务id的所有行在表中都是连续的。 此值为零索引。当前最大事务id应为 以max_transaction_id
(也可以是uint64)写入表的属性。 写操作应该使max_transaction_id
增加一个。在transaction_time (datetime64)
:这是一个时间戳(从epoch开始秒)。任何元数据 关于时区应该作为数据集的字符串属性存储为transaction_time_zone
。这表示数据在 由写入操作记录。具有相同transaction_id
的所有行都应 这里有相同的值。在valid_time (datetime64)
:这是一个时间戳(从epoch开始秒)。任何元数据 关于timetzones应该作为数据集的字符串属性存储为valid_time_zone
。这是时间序列的主轴。它代表 存储在value
列中的数据。在value ((I,J,K,...)<scalar-type>|)
:此列表示实际值 时间序列的。这可以是任何有效数据类型的N维数组。 将我们自己限制为float和int可能就足够了,但是模型 应该足够通用,可以接受任何标量数据类型。另外,典型的 用例将使此列成为标量浮点值。在
因此,具有浮点值和(1, 2, 3)
形状的numpy dtype示例如下:
np.dtype([('transaction_id','<uint64'),('transaction_time','<M8'),('valid_time','<M8'),('value','<f8',(1,2,3))])
快速启动API
写入双时态HDF5存储器的接口如下:
^{pr2}$从数据集中读取数据应遵循正常的numpy索引:
# opened in read-only mode>>>ds=bth5.open("/path/to/file.h5","/path/to/group")>>>in_mem=ds[:]>>>in_mem.dtypenp.dtype([('valid_time','<M8'),('value','<f8',(1,2,3))])
这将再次返回中存在的最新有效时间和值
简化数据集。此外,还有一个泄放阀来达到
磁盘上表示的数据集。这是raw
属性,它返回
对h5py数据集的引用。在
>>>ds=bth5.open("/path/to/file.h5","/path/to/group")>>>ds.raw
- 项目
标签: