Kdb 构造q命令以获取所有表的元数据

Kdb 构造q命令以获取所有表的元数据,kdb,Kdb,我想构造一个查询来检索每个表的表元数据 我可以使用meta函数获取单个表的元数据。我可以将其与tables\`.链接,后者返回命名空间中的所有表,以构造(meta')表。 这几乎就是我想要的,因为它返回一个元数据表列表。问题是我不知道哪个元数据表属于哪个kdb表 理想情况下,我可以构造一个查询,返回一个表,其中每一行都是tablename+metatablename的结果。构造这样一个查询有什么建议吗 q)trade:([] sym: 10?`4; time:10?.z.t; prx:10?10

我想构造一个查询来检索每个表的表元数据

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

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

理想情况下,我可以构造一个查询,返回一个表,其中每一行都是tablename+metatablename的结果。构造这样一个查询有什么建议吗

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
我可以构造一个查询,返回一个表,其中每一行都是tablename+metatablename的结果。构造这样一个查询有什么建议吗

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";````;````)

谢谢,第一个是一个很好的解决方案,但第二个正是我想要的。我对更新命令的理解是,它返回由“tables[]”返回的表,并带有一个额外的tableMeta列,该列是通过调用“table”列上的meta生成的。我做对了吗?谢谢,这真的很有帮助