KDBとQは初めてです。
Q For Mortalsで以下を読み、複合列がKDBでサポートされていると推測しました。
すべてのアイテムが同じタイプの単純なリストであるネストされた列の場合は、kdb +で特別に処理されます。これを複合カラムと呼びます。単純なリストがすべて同じ長さである必要はありません。
次のように、テーブルに新しい列を作成できることを知っています。 tablename: update newcol:value from tablename
値を別の列として設定したり、他の列や定数値を使用して計算したりすると、正常に機能し、値が適切に設定された新しい列がテーブルに作成されます。ただし、値をリストとして設定しようとすると、機能しませんtablename: update newcol: (1 2) from tablename
。「長さ」エラーが発生します。
Q For Mortalsのドキュメントを確認しましたが、このような複合列がどのように作成されるのか理解できませんでした。リストを格納する列の作成を手伝ってください。ありがとう!
例を見ずに、これは、qがテーブルと同じ長さではない1 2
値として使用しようとしているためである可能性がnewcol
あります。リスト自体をテーブルの各エントリとして強制するには、適切な量の値が必要です。これは、仮想列i
とを使用して実現できますenlist
。
q)tab:([]time:5#.z.d;col1:1 2 3 4 5)
q)tab
time col1
---------------
2020.07.17 1
2020.07.17 2
2020.07.17 3
2020.07.17 4
2020.07.17 5
q)update col2:1 2 from tab
'length
q)show tab:update col2:count[i]#enlist 1 2 from tab
time col1 col2
--------------------
2020.07.17 1 1 2
2020.07.17 2 1 2
2020.07.17 3 1 2
2020.07.17 4 1 2
2020.07.17 5 1 2
q)meta tab
c | t f a
----| -----
time| d
col1| j
col2| J
テーブルのメタには、col2の大文字のJが含まれており、各エントリがlongのリストであることを示しています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加