将索引数据从原始索引转换为日期索引格式

问题描述 投票:0回答:2

我能够以以下两种格式获取分区中某些数据的索引数据。

  1. 其中第一个each是分区,最后一个each是该分区中的索引
form1:((2023.07.31;2);(2023.07.31;3);(2023.07.31;9);(2023.08.01;4);(2023.08.01;32);(2023.08.03;5))
  1. 索引按日期偏移。偏移值是存储在字典中的分区的计数。然而,第一个键是first[partition]-1,并且由于没有索引偏移而设置为0。最终分区没有偏移量,因为我们不需要该信息。
form2:(2 3 9 24 52 75)
ioffset:(2023.07.30 2023.07.31 2023.08.01 )!(0;20;50)

(我也可以将 ioffset 设为聚合,因此改为

(0 20 70)

ex 1:对于第 24 项 - 它大于 20 但小于 50,因此它位于分区 2023.08.01 中,需要使用 2023.07.31 的偏移量。所以 24-20=4,所以它位于分区中的索引 4 处。

ex2:对于第 75 项,它高于 50+20,因此它是 2023.08.01 以上的一个分区,即 2023.08.02。 75-50-20=5 所以它的索引为 5。

我想将 form1 或 form2 转换为以下格式:

finalForm:(2023.07.31 2023.08.01 2023.08.02)!((2 3 9);(4 32);(enlist 5))

我可以使用 form1 或 form2,以转换格式最快者为准,因为我可以在大约相同的时间内获取 form1 和 form2 的数据。

谢谢!

kdb
2个回答
3
投票

可以使用

group
来做到这一点

q)form1[;1] group form1[;0]
2023.07.31| 2 3 9
2023.08.01| 4 32
2023.08.03| ,5

0
投票

您的 form2 不包含将值映射到日期的信息?如果没有这些信息,就不可能做到这一点。如果我有的话你可以做:

q)form2:(2023.07.30 2023.07.31 2023.08.01)!(2 3 9;24 52;75)
q)ioffset:(2023.07.30 2023.07.31 2023.08.01 )!(0;20;50)
q)form2-sums ioffset
2023.07.30| 2 3 9
2023.07.31| 4 32
2023.08.01| 5
© www.soinside.com 2019 - 2024. All rights reserved.