2017-06-27 20 views
1

最初の列と他の列をnullにするだけとします。最速の方法は何ですか?異なるタイプが存在する可能性があります。多くのヌル値を持つレコードをkdbに挿入する

10列とします。これは私が考えることができます:

`tab insert (`abcd;`;"";`;"";"";`;`;`;`;`;`)??? 

いずれかの高速ですか?

答えて

1

は、辞書形式で挿入する値(第2パラメータ)を指定してみてください。

q)tab:([]a:1 2 3;b:3 4 5;c:4 5 6;d:5 6 7;e:6 7 8) 
q)`tab insert `a`b!1 2 
q)tab 
a b c d e 
--------- 
1 3 4 5 6 
2 4 5 6 7 
3 5 6 7 8 
1 2 

編集:

/1 record/1 column 
q)dict:enlist[`column1]!enlist[`abcd] 
q)`tab insert dict 

/N records/1 column 
q)dict:enlist[`column1]!enlist(`abcd`efgh`ijkl) 
q)`tab insert flip dict 
1

あなたが探しているトリックは、 "最初の0#" である - これは上の使用しました任意のデータ型は、そのデータ型に対してヌルを作成し、実際のデータ挿入と同時にヌルを動的に挿入できるようにします。

//create typed tab(schema) with all possible datatypes except c 
tab:flip (`$'c)!(c:.Q.t except " ")$\:() 

//(first 0#) each datatype to gather nulls for every column 
//modify first column as you want to insert real data there 
//insert results to tab 
`tab insert @[(first 0#) each flip tab;first cols tab;:;1b] 

//if you want to insert two actual events, say for col m and col t 
`tab insert @[(first 0#) each flip tab;`m`t;:;(2017.01m;10:00t)] 

http://code.kx.com/q/ref/dotq/#qff-append-columnsはまた、あなたが追加の列

HTH、
が必要な場合は、適切に定義された初期テーブルのスキーマを持っている場合はショーン

+0

'first 0#tab'は動作しますが、ヌル値を持つ行を取得するには' tab 0N'が好ましいです。この形式には、ストリング列のタイプを保持する利点もあります。最初の0#([] a:enlist "ab") 'に対して'([] a:enlist "ab")0N'を試してください。 –

0

が、私はあなたがnull /デフォルトを提供する必要はありません信じて、さらにラインの下有用であることを証明し得ます更新しようとしていない列の値。例えば

、上記

t:flip `date`sym`ts`qty!(`d1`d1`d1`d1`d1`d1`d2;`s1`s1`s2`s1`s1`s2`s1;`t1`t1`t2`t3`t4`t5`t1;-100 -100 200 200 500 -300 -400) 
    `t insert (`date`qty)!(`d10; -88f) 

date and qty値を追加し、あなたが

meta t 

を経由して、テーブルのタイプをチェックするときには、テーブルのタイプは取得していないことがわかります変更されました

関連する問題