2017-04-27 14 views
2

テーブルに日付列を追加しようとしていますので、今日の日付を各行に追加して更新したいと考えています。KDB長さnのベクトルを作成する方法

http://www.timestored.com/b/forums/topic/add-a-column-to-a-table-kdb/ 

このリンクに従うと、私はそれを更新するだけですが、今日の日付でいっぱいの長さカウントテーブルのベクトルを作成する方法を見つけることができません。 とてもシンプルに聞こえますが、私はこれを行う方法を見つけることができませんので、助けてください。

答えて

4

「テイク」機能#を使用できます。例えば。

q)length:10 
q)length#.z.d 
2017.04.27 2017.04.27 2017.04.27 2017.04.27 2017.04.27 2017.04.27 2017.04.27 2017.04.27 2017.04.27 2017.04.27 

通常の更新を行うことはできますが、

q)t 
s p 
----- 
IBM 1 
IBM 1 
IBM 1 
q)update dt:.z.d from t 
s p dt 
---------------- 
IBM 1 2017.04.27 
IBM 1 2017.04.27 
IBM 1 2017.04.27 
+0

ああ、はい、そのベクトルも必要ありません... nice。ありがとう – chrise

+0

私は@ james-littleに同意します。単純に 'update dt:.z.d from t'メソッドを使います。ベクトルをカットして追加する必要はありません。 – davidcrossey

4

ジェームズが言及したように、あなたが更新した場合/アトムを使用して、テーブルの列を生成し、その後、KDBは、自動的に必要な長さのベクトルに原子を向けるだろう。

q)tab:([] col1:`a`b`c;col2:1 2 3) 
q)update date:.z.d from tab 
col1 col2 date 
-------------------- 
a 1 2017.04.27 
b 2 2017.04.27 
c 3 2017.04.27 

これはまた、フリップ、これは発生しません文字列や他のネストされた構造のためしかし

q)flip (1 2 3;`a) 
1 `a 
2 `a 
3 `a 

で発生します。この場合、手動でベクトルを生成する必要があります

q)update str:count[i]#enlist "hello" from tab 
col1 col2 str 
----------------- 
a 1 "hello" 
b 2 "hello" 
c 3 "hello" 
関連する問題