2017-06-05 1 views
0

a1とa2の2つのインスタンスがあり、両方が同じhdbに接続している場合。 a2をhdbに接続したいが、いくつかのフィルタを追加する。たとえば、elecというテーブルがあります。kdbにhdbをロードするときにいくつかのフィールドをマスクする

a2はいくつかの値のフィルタリングから始まります。コードを書いて、起動時にa2にロードさせると、情報をメモリにロードしないのですか? a2インスタンスを起動するときに通常のhdbのようにロードできる方法はありますか?

基本的に、質問は、hdbをロードするときに1つのテーブルのいくつかのフィールドをマスクする方法ですか?

+0

わかりませんが、簡単な再現可能な例はありますか? – terrylynch

+0

ありがとうテリー!例:2つのインスタンスが同じhdbデータをロードします。 hdbの10個のテーブル両方のロードは同じディレクトリから行います。 hdbをロードしてa2インスタンスを開始したいが、1つのテーブルの日付をフィルタリングし、2017.05.30の前のデータのみを表示する場合。どうやってやるの? – Terry

+1

a2 hdbインスタンスで.Q.viewを見ることができますが、これはすべてのテーブルに適用されます。http://code.kx.com/wiki/JB:KdbplusForMortals/dotQ_utilities q).Q.view 2017.05。 30 –

答えて

2

HDBインスタンスのテーブル定義を操作するselect文によって、カラムが返されるのを防ぐことができます。以下の例では、日付を1つに区切ったテーブルがあります。定義された列のサブセットのみを含む反転された辞書に定義を更新します。しかし、これは元に戻すことができ、インスタンス内のテーブルのメタを更新することはなく、すべての列を表示します。

q)meta trade 
c | t f a 
----| ----- 
date| d 
sym | s p 
size| j 
px | f 
side| s 

q)flip trade 
`sym`size`px`side!`trade 


q)`trade set flip `sym`size`px!`trade 
q)select from trade where date=2017.05.27 
date  sym size px 
------------------------------ 
2017.05.27 APPl 9968 92.79204 
2017.05.27 APPl 9788 94.97189 
2017.05.27 APPl 9660 27.62907 

q)meta trade 
c | t f a 
----| ----- 
date| d 
sym | s p 
size| j 
px | f 
side| s 
+0

ありがとう!これは動作します!!!!いつでも、テーブルの日付にどのようにフィルタを追加できるのか分かります。そのため、特定の日付以前にデータをクエリすることができますか? – Terry

+0

.Q.viewを使用すると、使用可能な日付を制限する最も簡単な方法ですが、これはHDBインスタンスのすべてのテーブルに適用されます。 – Gilmer

+0

ありがとうGilmer。戻り値を他の何かに置き換える方法はありませんか?例。データフィールドには、 "account = 1234、cash = 3456"が返されます。私はどのようにクエリで関数を実行する方法を知っているが、私はqのスクリプトで何かを書くことができるので、人々が通常のクエリを行う場合は、アカウント情報は空白または何か他のものに置き換えることができます。 – Terry

関連する問題