【问题标题】:Finding position of key in list column of a table在表的列表列中查找键的位置
【发布时间】:2017-02-02 08:39:45
【问题描述】:

我有一张表,其中一列 keynameint,另一列 keylistlistint。我正在尝试以下列方式在我的表中创建另一列 keynamekeylist 中的位置:

update keypos:{y?x} . (keyname;keylist) from tableName

update keypos:{{x?1}(y=x)} . (keyname;keylist) from tableName

这两个结果都是keypos 的值=表格大小。

非常感谢任何见解。

【问题讨论】:

  • 它返回“表大小”的原因是因为您正在对整个键名列表执行单个查找到列表列表中。但是整个键名列表不在列表列表中,因此它返回越界索引(恰好等于表的计数)。 Kdb 然后将这个单个原子转换为一个向量,使其成为一个有效的列。我认为您要做的是将 each 键名查找到 each 列表中。这就解释了为什么需要两者兼而有之
  • 谢谢@terrylynch

标签: list kdb q-lang


【解决方案1】:
update keypos:keylist?'keyname from tableName

【讨论】:

  • 谢谢阿卡什。这行得通。你能解释一下为什么当这在非表格设置中起作用时,两者都需要。
  • 这是因为表列被实现为列表,使得每个都合适。在非表使用中,keypos 是一个标量。所以 keypos 实际上是一个整数列表,而 keylist 是一个整数列表的列表
  • 谢谢@JamesLittle
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
相关资源
最近更新 更多