问题标签 [q-lang]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - 用于查询和转换为 Matlab (HDF5) 的最佳时间序列格式
我有一些独特的问题,看起来类似于这里的问题:
https://news.ycombinator.com/item?id=8368509
我有一个高速流量分析框,它以大约 5 Gbps 的速度捕获,并从中挑选出特定的数据包以保存为 C++ 程序中的某种格式。每天可能会有 1-3 TB 写入磁盘。由于它是网络数据,因此它的所有时间序列都低至纳秒级,但最好将其保存在秒或毫秒级,然后让另一个应用程序对嵌入的更高分辨率的时间戳进行排序。我的问题是决定使用哪种格式。我的两个要求是:
- 能够使用几个不同的时间戳参数以大约 50 MB/s 的速度连续写入磁盘。
- 能够将此数据块导出到 MATLAB (HDF5)。
- 每天查询一次或两次此数据以进行分析
另一个不是硬性要求的好东西是:
- 将有 4 个这样的盒子独立运行,如果可能的话,最好查询所有这些盒子并合并数据。我应该提到所有这 4 个盒子都位于物理上不同的位置,因此共享数据存在一些开销。
由于遗留应用程序,第二个是我无法更改的,但我认为第一个更重要。我可能想要导出到 matlab 的查询类型类似于“在时间 Y 和 Z 之间拉度量 X”,因此最终必须进入 HDF5 格式。如果需要,我可以使用一个名为 MatIO 的外部库来编写 matlab 文件,但如果没有翻译步骤会更好。我已经阅读了上面提到的整个线程,并且有很多选项似乎很突出:kdb+、Cassandra、PyTables 和 OpenTSDB。所有这些似乎都在做我想做的事,但我真的不知道将它变成 MATLAB HDF5 格式有多么容易,以及是否其中任何一个会使它比其他格式更难。
如果有人有做类似事情的经验,那将是一个很大的帮助。谢谢!
kdb - 如何将字符数组转换为kdb中的列表
我们有从不同列获取数据的 KDB 查询,其中一列具有字符数组类型 ('C'),即它包含文本。我们想要的是enlist
当我们查询这样的数据时
select enlist column_with_character_arr from table
即在一个列表中包含(“value1”),以便我们稍后可以向该列表添加一个元素,例如,(“value1”,“value2”)。怎么做?因为目前当我们尝试enlist
添加或添加,()
时,它会因长度错误而失败。
kdb - 如何创建按时间间隔分组且不关闭 RDB 的 KDB 查询?
我们从交易所收到报价并将其存储在 KDB Ticker Plant。我们希望分析 RDB 和 HDB 中的卷,同时对这些数据库的性能影响最小,因为它们也被其他团队使用。
- 首先,我们如何创建一个函数,以 10 分钟为间隔分割一天,并为每个间隔创建一个包含数量的统计信息?我们需要使用哪些 KDB 函数?
- 其次,如何安全地做到这一点?我们应该在循环中逐部分提取记录还是一次查询一次?我们的数据库中每天有大约 1.5 亿条记录。
kdb - 更新时间点(双时态)表
让我们有一个存储时间点(双时态)数据的表:
示例数据可能如下所示:
例如,在该stamp
时间点,我们记录了IBM
符号的值 105.11,对2015.01.05
不断有新数据进来,其中一些将作为新记录插入到pit
表中,但前提是它们传达了新信息。pit
不得删除或更新/覆盖任何现有记录。即,我们希望跟踪过时的(如果有的话)值以用于审计或真实性目的。想想随着时间的推移收益估计的更新。
例如,稍后我们可能会收到:
将new
信息合并到pit
后,后者应如下所示:
请注意使用当前时间戳(在撰写本文时)输入的符号的“新”105.22
值。此外,from 的值并没有以任何方式更新时间戳,因为我们已经将该值反映在携带的旧时间戳中。IBM
pit
2015.03.10D15:43:50
106.6
new
pit
pit
如何使用 编写各自的insert
语句q
?
注意:为了简单起见,它的价值pit
是由此处未显示的附加列进行分区。source
此外,分区将具有`g#sym
(可能`p#sym
相反)和`s#dt
属性。
kdb - 在启动时加载 init.q 文件
我的q.bat
文件运行良好,其内容是:
在init.q
文件中定义了一些基本的 q 函数后,我希望每次启动 kdb+/q 时都加载它们并使其可用。我尝试在q.bat
文件末尾包含以下行,但它什么也没做:
我读过其他方式,比如设置QINIT
环境变量或编辑q.q
文件,但我怀疑通过加载.bat
更干净。
kdb - 从包含空格字符的路径加载 file.q
如何从包含空格的路径加载脚本文件?
例如,这有效:
以下尝试引发错误:
c++ - C++ 符号和 Q 符号不匹配
从 C++ 代码返回符号时我遇到了一些麻烦。我做了一个小例子来说明这个问题。
我们导出以下函数:
然后从 Q 调用它:
为什么这两个值不相等?
这是 32 位 KDB+ 3.2。
python - 将包含字符串列的 pandas DataFrame 传递给 kdb+(使用 qPython API)
exxeleron/qPython
模块允许将 pandas 发送DataFrame
到kdb+/q
's 表。
让我们准备数据:
DataFrame
然后要传递的对象如下所示:
当我尝试将其发送到 时kdb+/q
,我收到以下错误:
kdb - kdb+/q:检查参数是否已提供给函数调用
假设我们有fun
两个参数的函数,第二个是可选的。如何在函数中检查是否提供了第二个可选参数并采取相应措施?
```
debugging - 如何在 qStudio 中进行调试?
下面的代码,当从终端运行时,让我进入调试模式:
但是,当我在 qStudio 中运行它时,它只是失败了,并且似乎退出了该功能。qStudio 是否支持调试模式?如果是这样,我怎样才能进入允许我检查/操作该函数中的变量的模式?