4

すべてのドキュメントを見ました。なぜこれが機能しないのですか?KDB ディストリビューションで提供される sp.q サンプル ファイルを読み込みました。このステートメントの何が問題なのか、私には理解できません。

q) \l sp.q
q)trade
date       sym time         price    size
-----------------------------------------
2007.07.23 a   04:48:52.665 73.53941 1000
2007.07.23 a   04:48:52.675 81.73358 600
2007.07.23 a   04:48:52.725 78.79526 900
2007.07.23 a   04:48:52.735 79.59502 600
2007.07.23 b   04:48:52.655 84.59765 200
2007.07.23 b   04:48:52.685 98.36199 500
2007.07.23 b   04:48:52.705 97.49875 700
2007.07.23 c   04:48:52.645 61.48308 900
2007.07.23 c   04:48:52.695 61.53192 700
2007.07.23 c   04:48:52.715 71.95405 200

q)trade:update size:300 from trade where sym=`c,price>71
'par
q)trade
date       sym time         price    size
-----------------------------------------
2007.07.23 a   04:48:52.665 73.53941 1000
2007.07.23 a   04:48:52.675 81.73358 600
2007.07.23 a   04:48:52.725 78.79526 900
2007.07.23 a   04:48:52.735 79.59502 600
2007.07.23 b   04:48:52.655 84.59765 200
2007.07.23 b   04:48:52.685 98.36199 500
2007.07.23 b   04:48:52.705 97.49875 700
2007.07.23 c   04:48:52.645 61.48308 900
2007.07.23 c   04:48:52.695 61.53192 700
2007.07.23 c   04:48:52.715 71.95405 200
4

2 に答える 2

4

trade分割されたテーブルであるため、これは失敗しています。あなたは正確に何をしようとしていますか?メモリ内のデータの編集済みコピーを作成する場合は、次のようなものが必要です

q)t:update size:300 from(select from trade)where sym=`c,price>71
q)t
date       sym time         price    size
-----------------------------------------
2007.07.23 a   04:48:52.665 73.53941 1000
2007.07.23 a   04:48:52.675 81.73358 600
2007.07.23 a   04:48:52.725 78.79526 900
2007.07.23 a   04:48:52.735 79.59502 600
2007.07.23 b   04:48:52.655 84.59765 200
2007.07.23 b   04:48:52.685 98.36199 500
2007.07.23 b   04:48:52.705 97.49875 700
2007.07.23 c   04:48:52.645 61.48308 900
2007.07.23 c   04:48:52.695 61.53192 700
2007.07.23 c   04:48:52.715 71.95405 300
q)

ディスク上のデータを変更したい場合、それは一般的に非常に困難です。この特定のケースでは、次のように実行できます。

q){.Q.dd[.Q.par[`:.;x;`trade];`]set update size:300 from(select from trade where date=x)where sym=`c,price>71}2007.07.23
`:./2007.07.23/trade/
q)\l .
q)trade
date       sym time         price    size
-----------------------------------------
2007.07.23 a   04:48:52.665 73.53941 1000
2007.07.23 a   04:48:52.675 81.73358 600
2007.07.23 a   04:48:52.725 78.79526 900
2007.07.23 a   04:48:52.735 79.59502 600
2007.07.23 b   04:48:52.655 84.59765 200
2007.07.23 b   04:48:52.685 98.36199 500
2007.07.23 b   04:48:52.705 97.49875 700
2007.07.23 c   04:48:52.645 61.48308 900
2007.07.23 c   04:48:52.695 61.53192 700
2007.07.23 c   04:48:52.715 71.95405 300
q)
于 2013-06-27T20:59:12.743 に答える
2

テーブルは日付別に分割されています。クエリを実行する日付を指定する必要があります。

trade:update size:300 from trade where sym=`c,price>71, date within (<d1>;<d2>)
于 2012-11-23T16:18:40.923 に答える