もちろん、文字列列を含むため、列挙する必要があるkdbテーブルを分割するために数行をまとめました。
このコードは完全に正しいのか、それともさらに単純化できるのか疑問に思います。特に、メモリ テーブルとディスク テーブルのレイアウトがまったく同じであることを考えると、パーティション分割されたテーブル スキーマを作成する必要があるかどうかについては疑問があります。また、一時テーブルtbl_mem
とtbl_mem_enum
テーブルの作成を回避する方法があるかもしれません:
...
tbl_mem: select ts,sym,msg_type from oms_mem lj sym_mem;
tbl_mem_enum: .Q.en[`$sym_path] tbl_mem;
delete tbl_mem from `.;
(`$db;``!((17;2;9);(17;2;9))) set ([]ts:`time$(); ticker:`symbol$(); msg_type:`symbol$());
(`$db) upsert (select ts,ticker:sym,msg_type from tbl_mem_enum)
delete tbl_mem_enum from `.;
PS: 変数の名前に「_」を使用すべきではないことはわかっていますが、変数名または関数名の単語を区切るには何を使用すればよいでしょうか? .
も kdb 関数です。