KDB 列等号反勾不起作用

KDB column equal sign back tick not working

此查询仅从两种应用类型获取列数据——STEALTH 和 BOMB US。在我不得不将 eventtype 列隔离为仅 "AR" 个事件之前,此查询工作正常。数据太多,无法将其隔离。 我从未见过如此多的数据。我看到的所有其他 q 脚本都使用这种格式来过滤列,即带反勾号的等号。 此查询的结果集要小得多,但是结果集 header 中列的标签,而不是 "eventtype" 只有一个 X。此外,列数据不是 "AR",而是 1 或 0 - 这可能是真或假。 如果它实际上是 AR,而不是 1 或 0,我需要列数据说 AR。另外,如果列 header 说 "eventtype" 而不是 "x",那将是令人放心的就像我 运行 脚本没有 (equal backtick AR) =`AR

我正在使用 qpad 运行 查询

raze{[tradedate] 

setdate tradedate;

`rootordid`clordid xasc

select from( 
        (select ltime transacttime, apptype, rootordid, eventtype=`AR, msgcategory from orders where (apptype like "STEALTH US") or apptype like "BOMB US")
         )}each .utl.get_bdts[2017.12.04;2017.12.05]

您看到的使用 equals backtack 过滤列的脚本正在使用它来过滤符号类型的列。您可以通过 运行 meta tablename 来判断列的类型。过滤数据也要求这个条件在 where 子句中。对于上面的示例,如果 eventtype 是符号类型,那么您需要将 where 子句修改为:

where (apptype like "STEALTH US") or apptype like "BOMB US", eventtype=`AR

where eventtype=`AR, (apptype like "STEALTH US") or apptype like "BOMB US"

在此阶段,输出 table 将仅包含 AR 事件,并保留名称 eventtype,而不会输出布尔列表。

有关 selectwhere 子句的更多信息,请查看维基上的 Q-SQL 页面。

注意:如果eventtype是字符串类型那么你可以使用eventtype like "AR".


此外,如果 apptype 是符号列,您可以将其条件修改为:

where apptype in `$("STEALTH US";"BOMB US")

这应该会比使用 like.

提高性能