热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

kdb/q问题:我如何在功能选择中解释这个组?

如何解决《kdb/q问题:我如何在功能选择中解释这个组?》经验,为你挑选了1个好方法。

我是kdb/q的新手,我正在试图找出这个特定查询的含义.代码使用功能选择,我不太满意.

?[output;();b;a];

其中output是一些包含列的表 size time symbol

groupby过滤字典b定义如下

key | value
---------------
ts  | ("+";00:05:00v;("k){x*y div x:$[16h=abs[@x];"j"$x;x]}";00:05:00v;("%:";`time)))
sym | ("k){x'y}";"{`$(,/)("/" vs string x)}";`symbol)

为了完整起见,字典a被定义为

volume  ("sum";`size)  

实际上,功能选择似乎将数据分成5分钟的桶并进行一些解析symbol.令我困惑的是如何阅读groupby字典.特别是k)"部分和整个事物都在引号中.有人可以帮助我解决这个问题,还是指出可以帮助我理解的资源?任何输入将不胜感激.



1> Mark Kelly..:

函数形式的聚合部分采用字典,键是输出键列名,值是解析树函数.

解析树是不立即求值的表达式.作为函数的第一个参数和后续元素是它的参数.首先评估最内部的括号,然后沿着层次向上移动,依次评估每个括号.可以在此处以及该页面上链接的白皮书中找到更详细的信息

您可以使用parse带有字符串参数的函数来获取函数的解析树.例如,解析树1+2+3(+;1;(+;2;3)):

q)parse "1+2+3"
+
1
(+;2;3)

在结果被传播到最外部的解析树函数给出之前,(+;2;3)首先评估最内部括号5(+;1;5)6

该子句的groupby部分将评估一个或多个解析树函数,然后将收集来自分组函数的相同输出的记录.

使函数更清晰易读:

(+;00:05:00v;({x*y div x:$[16h=abs[@x];"j"$x;x]}";00:05:00v;(%:;`time)))

查看最内部括号(%:;`time),它返回%:时间列上应用的结果.我们可以看到这%:是函数的kltime

q)ltime
%:

向上移动一个级别,下一个评估的函数是{x*y div x:$[16h=abs[@x];"j"$x;x]}带有参数的lambda函数00:05:00v和我们之前评估函数的结果.lambda将它向下舍入最近的5分钟间隔

({x*y div x:$[16h=abs[@x];"j"$x;x]};00:05:00v;(%:;`time))

向上移动到整个表达式相当于00:05:00v + {x*y div x:$[16h=abs[@x];"j"$x;x]};00:05:00v;(%:;`time)),将00:05:00添加到先前评估的每个结果上.

所以基本上它首先返回时间戳的本地时间,然后

用于symbol聚合

("k""{x'y}";{`$(,/)("/" vs string x)};`symbol)

内部函数{`$(,/)("/" vs string x)}将符号串起来,将其拆分为"/"字符,然后将其重新连接在一起,从而有效地删除斜杠

"k"是一个使用k解释器计算字符串的函数.

"k""{x'y}""返回一个函数,它本身接受一个函数x和一个参数,y并修改函数以使用每个副本'.这使得该功能x单独应用于每个符号而不是作为整体的列.

这可以q代替k 来实现,如下所示:

({x@'y};{`$(,/)("/" vs string x)};`symbol)

该函数{x@'y}接受函数参数{`$(,/)("/" vs string x)}symbol 列,如前所述,但是我们必须使用@q中的每个副词来对参数应用函数.

然后,聚合函数将应用于每个组.在您的情况下,该函数是一个简单的解析树,它将返回sum每个组中的大小列,并调用输出列volume

a:enlist[`volume]!enlist (sum;`size)


很好的解释!两个注释:`k){x*y div x:$ [16h = abs [@x];"j"$ x; x]}`是`xbar`和`k){x'y}`是`每个`所以对q最简单的翻译是`(xbar; 00:05:00v;(ltime; \`time))`和`(每个; {\`$(,/)("/"vs string x)}; \`符号)`
推荐阅读
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 在Kubernetes上部署JupyterHub的步骤和实验依赖
    本文介绍了在Kubernetes上部署JupyterHub的步骤和实验所需的依赖,包括安装Docker和K8s,使用kubeadm进行安装,以及更新下载的镜像等。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
author-avatar
张晓和46872
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有