Iev*_*nii 0 select grouping substring count kdb
我是 KDB 的新手,正在努力创建查询。将不胜感激任何帮助。
我有一个字符串表,需要获取表中所有字符串中所有特定子字符串的计数。
所以,我们假设我有字符串:
[
string1: Apple is green, cherry is red,
string2: Ququmber is green, banana is yellow
]
Run Code Online (Sandbox Code Playgroud)
我想计算所有子字符串中“Apple”和“green”的数量。我想要的结果是像这样进行分组:
{
Apple: 1,
green: 2
}
Run Code Online (Sandbox Code Playgroud)
但不幸的是,我不知道如何进行这样的分组。我已经弄清楚如何获取至少包含一个所需子字符串的字符串:
"select count(text) from data where any text like/: (\"*$Apple*\";\"*$green*\")"
Run Code Online (Sandbox Code Playgroud)
但这返回了所有找到的 Apple 和 green 字符串的累积结果,没有任何分组:
{
text: 3
}
Run Code Online (Sandbox Code Playgroud)
它不允许区分每个特定子串的数量。
我将非常感谢任何帮助。
any您可以将 the 放在select 短语中来获取嵌套的布尔值like/:列表,其中每个列表代表一个搜索字符串的匹配项,而不是使用带有 的 where 子句。然后您可以仅使用sum这些来获取每个搜索字符串的总匹配项。我在这里使用了 anexec而不是 a,select因为我怀疑输出会更有用:
q)t:([] text:("Apple is green, cherry is red,";"Ququmber is green, banana is yellow"))
q)exec sum each text like/:("*Apple*";"*green*") from t
1 2i
Run Code Online (Sandbox Code Playgroud)