2016-08-18 4 views
0

предположим у меня есть следующие две таблицыВыберите частичную совпадение строк из двух таблиц differtert в KDB?

Table1

symbol ric 
-------------- 
AAA AATSA.AS 
AALB AALB.AS 
AJAX AJAX.AS 
AMG AMG.AS 

Table2

Title    Ticker 
ARCELORMITTAL REG AAA.AS 
TC EURO EQ   TEET.AS 
HAL TRUST   HAL.AS 
TETRAGON FIN GROUP TFG.AS 

, что запрос, который мне нужно для того, чтобы получить все Table1.symbol, которые являются частично совпадающий с Table2.Ticker?

, например, в следующих двух таблицах я должен получать ААА от Table1.symbol, поскольку он частично соответствует с AAA.AS из Table2.Ticker

Благодарности

ответ

2

Я предполагаю, что единственная логика заключается в том, что Table2.Ticker можно разделить на ., и это можно сопоставить с Table1.symbol.

Во-первых, вы можете разделить тикер:

q)update fragment:`$("." vs' string Ticker)[;0] from `Table2 
`Table2 
q)Table2 
Title    Ticker fragment 
---------------------------------- 
ARCELORMITTAL REG AAA.AS AAA 
TC EURO EQ  TEET.AS TEET 

Хотя я мог бы назвать fragmentsymbol вместо меня это как отдельный столбец для иллюстрации. Кроме того, необходимо столбец fragment присоединиться на на Table1:

q)update fragment:symbol from `Table1 
`Table1 
q)Table1 
symbol ric  fragment 
------------------------ 
AAA AATSA.AS AAA 
AALB AALB.AS AALB 

Так что теперь мы можем либо сделать uj или lj - вы должны смотреть это на справочных страницах. Просто использовать uj в этом случае, чтобы увидеть весь притон:

q)(`fragment xkey Table1) uj (`fragment xkey Table2) 
fragment| symbol ric  Title    Ticker 
--------| ----------------------------------------- 
AAA  | AAA AATSA.AS ARCELORMITTAL REG AAA.AS 
AALB | AALB AALB.AS 
TEET |     TC EURO EQ  TEET.AS 

На ... заметка на полях Присоединение Bloomberg и РЦП символов кошмар :-) В конце концов вы будете иметь, чтобы есть таблицы, которые объединяются с ISINS, RIC и Bloomberg, имея в виду, что RIC и тикеры меняются со временем.

+0

Спасибо за ответ, я потратил столько времени на то, чтобы найти ответ. Также небольшая коррекция, которую я думаю, должна быть без символа '' перед именами таблиц. Последнее, что я собираюсь по кругу, чтобы получить что-то простое, чтобы это работало, знаете ли вы хорошие ресурсы, которые могут помочь мне лучше понять kdb? – Kareem

+0

@ Запишите имя таблицы, в которой '\' 'обновляет таблицу на месте. В противном случае вы получите копию возвращенной таблицы, а исходная таблица - нетронутой. Что касается ресурсов, я бы настоятельно рекомендовал Q для Mortals в первую очередь. Также есть куча других учебных пособий, см. Этот сайт: http://code.kx.com/wiki/Tutorials –

+0

Спасибо, обязательно посмотрите на это. – Kareem