Kdb 具有多个键控列的透视表
我有下表:Kdb 具有多个键控列的透视表,kdb,Kdb,我有下表: t:(([]y:2001 2002) cross ([]m:5 6 7) cross ([]sector:`running`hiking`swimming`cycling)),'([]sales: 14 12 5 9 4 894 1 4 87 12 24 6 4 8 64 354 3 4 86 43 1053 2 43 4); y m sector sales ------------------------ 2001 5 running 14 200
t:(([]y:2001 2002) cross ([]m:5 6 7) cross ([]sector:`running`hiking`swimming`cycling)),'([]sales: 14 12 5 9 4 894 1 4 87 12 24 6 4 8 64 354 3 4 86 43 1053 2 43 4);
y m sector sales
------------------------
2001 5 running 14
2001 5 hiking 12
2001 5 swimming 5
2001 5 cycling 9
2001 6 running 4
2001 6 hiking 894
2001 6 swimming 1
2001 6 cycling 4
...
2002 5 running 4
2002 5 hiking 8
2002 5 swimming 64
2002 5 cycling 354
2002 6 running 3
...
我想按部门
透视销售额
值,同时保留前两列y
和m
列,以便生成的表如下所示:
y m cycling hiking running swimming
--------------------------------------
2001 5 9 12 14 5
2001 6 4 894 4 1
2001 7 6 12 87 24
2002 5 354 8 4 64
2002 6 43 4 3 86
2002 7 4 2 1053 43
依照
如果您需要一个正常的表格,可以通过
()xkey
取消查询结果。做得很好,这是正确的答案。此外,该表可以使用0
而不是()xkey
,尽管后者可能更适合那些使用kdb的人,也更友好。谢谢Callum。我倾向于相信0
使用过度,即使可以节省一些输入,也不应鼓励使用。kdb+之外的任何人(例如Python开发人员)都可以通过查找文档来了解xkey的功能。这对于0是不正确的代码>作为代码>在Q中重载严重。但我同意你的看法,很高兴知道0代码>构造。
q) P:asc exec distinct sector from t;
q) exec P#(sector!sales) by y:y,m:m from t