
- KDB+ 教程
- KDB+ - 首頁
- Q 程式語言
- Q 程式語言
- Q語言 - 型別轉換
- Q語言 - 時間資料
- Q語言 - 列表
- Q語言 - 索引
- Q語言 - 字典
- Q語言 - 表格
- Q語言 - 動詞和副詞
- Q語言 - 連線
- Q語言 - 函式
- Q語言 - 內建函式
- Q語言 - 查詢
- Q - 程序間通訊
- Q - 訊息處理器(.Z庫)
- KDB+ 有用資源
- KDB+ - 快速指南
- KDB+ - 有用資源
- KDB+ - 討論
Q語言 - 連線
在q語言中,我們根據提供的輸入表和所需的連線表型別,有不同型別的連線。連線將來自兩個表的資料組合在一起。除了外部索引鍵查詢外,還有四種其他方法可以連線表:
- 簡單連線
- 截至連線 (asof join)
- 左連線 (left join)
- 聯合連線 (union join)
本章將詳細討論這些連線中的每一個。
簡單連線
簡單連線是最基本的連線型別,使用逗號“,”執行。在這種情況下,兩個表必須是型別一致的,即兩個表具有相同數量的列,順序相同,並且鍵相同。
table1,:table2 / table1 is assigned the value of table2
我們可以使用逗號連線每個長度相同的表來進行橫向連線。這裡可以對其中一個表進行鍵控。
Table1, `Table2
截至連線 (aj)
這是最強大的連線,用於獲取一個表中某個欄位的值,該值截至另一個表中的時間。它通常用於獲取每次交易時的現行買入價和賣出價。
通用格式
aj[joinColumns;tbl1;tbl2]
例如:
aj[`sym`time;trade;quote]
示例
q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9)) q)tab2:([]a:(2 3 4);b:(3 4 5); c:( 4 5 6)) q)show aj[`a`b;tab1;tab2] a b d c ------------- 1 2 6 2 3 7 4 3 4 8 5 4 5 9 6
左連線 (lj)
這是aj的一個特例,其中第二個引數是鍵控表,第一個引數包含右引數鍵的列。
通用格式
table1 lj Keyed-table
示例
q)/Left join- syntax table1 lj table2 or lj[table1;table2] q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9)) q)tab2:([a:(2 3 4);b:(3 4 5)]; c:( 4 5 6)) q)show lj[tab1;tab2] a b d c ------------- 1 2 6 2 3 7 4 3 4 8 5 4 5 9 6
聯合連線 (uj)
它允許建立具有不同模式的兩個表的聯合。它基本上是對簡單連線 (,) 的擴充套件。
q)tab1:([]a:(1 2 3 4);b:(2 3 4 5);d:(6 7 8 9)) q)tab2:([]a:(2 3 4);b:(3 4 5); c:( 4 5 6)) q)show uj[tab1;tab2] a b d c ------------ 1 2 6 2 3 7 3 4 8 4 5 9 2 3 4 3 4 5 4 5 6
如果在鍵控表上使用uj,則主鍵必須匹配。
廣告