3

私はqに次の機能を持っています:

{
    raze {[x]
        update PnlTime:x from
            flip ?[getPnl[`date`status!(2013.05.14;`traded)];
            ();();`date`Id`market`pnl!(`date;`Id;`market;x)]
    } each `pnl_0s`pnl_1s`pnl_5s
}

ここでは、関数から特定の日付のデータを取得し、結合などによってgetPnl新しい列を作成しています。時間範囲を渡すようにこのクエリを変更するにはどうすればよいですか?pnlpnl_0s(firstdate;lastdate)

4

1 に答える 1

3

最良の答えはテーブルによって異なります。これが日付表示されたテーブルである場合、これを行うのに最適な場所は getPnl 関数内であると思います。おそらくそれは次のようなことをしています:

select from aTable where date=x,....

と置換する:

select from aTable where date within (d1;d2),...

日付表示テーブルの場合、d1==d2 の場合、"date=" と "date within" ではヒットしません。

残念ながら、この機能にアクセスできない場合は、次のようにそれぞれ別の操作を行う必要があります。

d1=2014.01.01、d2=2014.02.14 と言います。

raze {[x] getPnl[`date`status!(x;`traded)]} each d1,d1+til 1+d2-d1

最後のビットは、d1 から d2 まで (両端を含む) の日付のリストを作成する魔法を行います。

于 2014-02-14T09:55:05.850 に答える