私は1時間以上のdatetimeを含む日時リスト(何らかの理由で私はそれをdate
という列と呼んでいます)を持っています。私は、その後、いくつかのテーブルからデータを選択することにより、列t
すなわち有効期限をpivotize、pivotizedテーブルに列として対応するdate
日時を追加し、すべてのために一緒にpivotizationをステッチする必要がこれらの日付のそれぞれについて バッチピボットを最適化する方法は?
adates:2017.10.20T00:02:35.650 2017.10.20T01:57:13.454 ...
日付。私は日付に対応しており、私はそれを一つずつやる理由ですどのpivotization識別することができなければならないことに注意してください:
fPivot:{[adate;accypair]
t1:select from volatilitysurface_smile where date=adate,ccypair=accypair;
mycols:`atm`s10c`s10p`s25c`s25p;
t2:`t xkey 0!exec mycols#(stype!mid) by t:t from t1;
t3:`t xkey select distinct t,tenor,xi,volofvol,delta_type,spread from t1;
result:ej[`t;t2;t3];
:result}
次のように私は、すべての日時adates
ために、この関数を呼び出す:
raze {[accypair;adate] `date xcols update date:adate from fPivot[adate;accypair] }[`EURCHF] @/: adates;
これには約90秒かかります。より良い方法があるかどうか疑問に思う。日付ごとに1つのピボットを実行してから、それをすべて一緒にステッチするのではなく、大きなピボット処理を行います。私が見る大きな問題は、date
属性をピボットの一部として含める明確な方法がなく、date
を失うことができないということです。結果を調整できません。
あなたが 'adates'で提供したデータはdatetimeではなくタイムスタンプです。 kdbのタイムスタンプは '2017.11.28D12:55:47.354335000'のようになります。日付と時刻の間の 'D'セパレータは、datetime型の' T'セパレータと比較して注意してください。 –
正解悪い、更新中。 –