2016-11-09 2 views
0

カラム名文字列を使用してテーブルの属性を適用することはできますか?例えばテーブルの属性を適用することは可能ですか?1)列名文字列を使用するか、2)テーブル変数を使用するか?

(動作しない):

t: flip `ti`p!(10:00:01 19:00:02; 77.7 88.8) 
update `p#"ti" from `t 

また、私はテーブルのリストの属性を更新することができますか?例えば

t1: flip `ti`p!(10:00:01 19:00:02; 77.7 88.8) 
t2: flip `ti`p!(10:00:01 19:00:02; 77.7 88.8) 
lst: (t1; t2) 
/How can I apply `p#ti on all the elements of "lst" 
/(i.e. acting on lst[0] and lst[1])? 

/does not always work: 
i:0; while[i<=1; t: lst[i]; update `p#ti from `t; lst[i]: t; i:i+1]; 

はあなたの助けをありがとうございました!これを行うには

+0

質問1:私はローカルテーブルで動作するソリューションを探しています。 問題2:ソリューションでは「lst」しか使用できません(t1、t2は使用できません)。あなたが2000テーブルを持っていると想像してください - それを手動ですべて1つずつリストするのは良い解決策のように見えますか? –

+0

#1について - シンボル表現の代わりにテーブルを渡すと、ローカルの解決法が機能します。シンボルを関数に渡してから、valueを使ってテーブル表現を得ることもできます。 #2について - 変数についての情報を追加するために、以下の回答を更新しました。 – user2242865

答えて

3

一つの方法は、functional amendである:

q)@[`t;`ti;`p#] 
`t 

q)show meta t 
c | t f a 
--| ----- 
ti| v p 
p | f 

あなたは突起部を作成し、各テーブルの上に動作させることができます。

q)@[;`ti;`p#] each `t1`t2 
`t1`t2 

テーブルのリストを変数に格納することができ、そのプログラムで入力することができます(この例では、テーブル[]を呼び出して変数を作成しています)。

tabs:tables[] 
q)@[;`ti;`p#] each tabs 
`t1`t2 
1

機能アップデートは別のオプションです: http://code.kx.com/q4m3/9_Queries_q-sql/#9123-functional-update

私はあなたが動的ので、下記のと同様の機能を文字列を受信して​​いるしていると推測しますが、入力として文字列を提供することができます:user2242865年代に

q)f:{[tablename;column]![tablename;();0b;(enlist `$column)!enlist (#;enlist `p;`$column)]} 
q)f[`t1;"ti"] 
`t1 

と似を答えは2つのテーブルで動作するように形成することができます。

q)f[;"ti"]each`t1`t2 
+0

どうやら、分割された属性を適用する方法は、グローバル変数でしか機能しません。例: t1:flip 'ti'p!(10:00:01 19:00:02; 77.7 88.8); ApplyPartedAttribute:{[tableSym; columnName]![tableSym; (); 0b; (enlist '$ columnName)!enlist(#; enlist' p; '$ columnName)]}; ApplyPartedAttribute ['t1; "ti"]; meta t1 は期待どおりに動作します。しかし、ではない テスト:{t1:flip 'ti'p!(10:00:01 19:00:02; 77.7 88.8); ApplyPartedAttribute:{[tableSym; columnName]![tableSym; (); 0b; (enlist '$ columnName)!enlist(#; enlist' p; '$ columnName)]}; ApplyPartedAttribute ['t1;" ti "];メタタグを表示する。 } –

+0

と@ user2242865の両方で、テーブルのリストに属性を適用する要素の名前を使用しますが、質問の要点は「利用できない場合、つまり 'lst'のみが利用可能な場合」です。 –

+0

作成方法可変内容はあなた次第です。私のソリューションは、変数の使い方を示しています。 – user2242865

関連する問題