2015-04-27 42 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

相關問題