2015-04-27 18 views
1

我想构建一个查询来检索每个表的表元数据。构造q命令来获取所有表的元数据

我可以用meta函数获取单个表的元数据。我可以链接tables \`.,它返回.命名空间中的所有表,构造(meta')tables `.

这几乎是我想要的,因为它返回元数据表的列表。问题是我不知道哪个元数据表属于哪个kdb表。

理想情况下,我可以构造一个查询,返回一个表,其中每行是表名+ meta tablename的结果。任何建设这样的查询?

回答

3
q)trade:([] sym: 10?`4; time:10?.z.t; prx:10?100f; sz:10?10000); 
q)quote:([] sym: 10?`4; time:10?.z.t; bPrx:10?100f; aPrx:10?100f; bSz:10?10000; aSz:10?10000); 
q)testTable:update `s#a from ([] a:til 10; b: 10?`3; c:10?.z.p); 
q)raze {update table:x from 0!meta x}'[tables[]] 
    c t f a table 
    -------------------- 
    sym s  quote 
    time t  quote 
    bPrx f  quote 
    aPrx f  quote 
    bSz j  quote 
    aSz j  quote 
    a j s testTable 
    b s  testTable 
    c p  testTable 
    sym s  trade 
    time t  trade 
    prx f  trade 
    sz j  trade 

我可以构建一个查询返回一个表,其中每行是“元表名”的表名+结果。任何建设这样的查询?

如果你确实想这样做,有很多方法。举一个例子:

q)update tableMeta:meta'[table] from ([] table:tables[]) 
    table  tableMeta 
    -------------------------------------------------------------------------------- 
    quote  (+(,`c)!,`sym`time`bPrx`aPrx`bSz`aSz)!+`t`f`a!("stffjj";``````;``````) 
    testTable (+(,`c)!,`a`b`c)!+`t`f`a!("jsp";```;`s``) 
    trade  (+(,`c)!,`sym`time`prx`sz)!+`t`f`a!("stfj";````;````) 
+0

谢谢,第一个是很好的解决方案,但第二个正是我想要的。 – sdab

+0

我对这里的update命令的理解是,它返回的是由“tables []”返回的表格,以及通过调用“table”列中的meta生成的额外的tableMeta列。我有权利吗? – sdab

+1

@sdab - 是的,这是正确的 – MdSalih

相关问题