gpt4 book ai didi

database - 使用嵌套字典在 kdb+ TSDB 表上选择查询

转载 作者:搜寻专家 更新时间:2023-10-30 19:57:33 26 4
gpt4 key购买 nike

为了在 kdb+ TSDB 中存储按标签分组的基于时间的数据,我创建了一个包含列 timestampvaltags 的表.标签是键值对,因此我使用字典将此类信息存储在 tags 列中。

创建表的查询:

myTable:([]timestamp:-12h$();val:-9h$();tags:());

插入一些示例数据的查询:

`myTable insert ("P"$"2015-11-30 13:10:45.126381"; 521.45117; `house`room!215 111)

如何获取 215 号房屋的所有数据/行数?我尝试了以下查询但没有成功(类型错误):

select from myTable where tags[`house]=215

感谢任何帮助。

最佳答案

要访问字典中的元素,您需要深度索引——在这种情况下需要处理 2 级嵌套。外层索引是行数,内层索引是字典键。

在 q 中,要在深度 ( elide ) 进行索引,您可以省略其中一个索引级别,在这种特殊情况下,查询将是:

q) select from myTable where tags[;`house]=215
timestamp val tags
----------------------------------------------------------
2015.11.30D13:10:45.126381000 521.4512 `house`room!215 111

注意事项:如果每行中的 tags 字典不是同类的(相同的键 + 相同的值类型),您可能会抛出 'type 错误对于 tags 字典缺少 house 键的行,因为 Kdb+ 将返回一个可能不是预期类型的​​空值。因此,可能需要使用匹配运算符 ( ~ )。

例如:

q) select from myTable where tags[;`house]~\:215
timestamp val tags
----------------------------------------------------------
2015.11.30D13:10:45.126381000 521.4512 `house`room!215 111

注意,这里使用了 each-left ( \: ) 副词。参见 here有关副词的更多详细信息。

关于database - 使用嵌套字典在 kdb+ TSDB 表上选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33989718/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com