KDB: Как сопоставить строку возможных дат со строками таблицы? - PullRequest
0 голосов
/ 20 марта 2019

Я просто хочу создать столбец даты, который представляет дату имени файла.

Моя таблица filesInDir представляет собой один столбец и 4 строки с именем filepath:

":..\..\code\products\Q\ExtData\CIBC\availability\Global\EquityOnly\daily\bnyMellon_inventory\push_list_20190314_040253_Equity.csv"
":..\..\code\products\Q\ExtData\CIBC\availability\Global\EquityOnly\daily\bnyMellon_inventory\push_list_20190314_040306_Equity.csv"
":..\..\code\products\Q\ExtData\CIBC\availability\Global\EquityOnly\daily\bnyMellon_inventory\push_list_20190311_040321_Bond.csv"
":..\..\code\products\Q\ExtData\CIBC\availability\Global\EquityOnly\daily\bnyMellon_inventory\push_list_20190312_999999_Cash.csv"

У меня также есть список возможных дат, 2019.03.12 2019.03.11 2019.03.14.Как сопоставить список дат со строками таблицы выше, чтобы я мог получить новый столбец, в котором указано значение даты, соответствующее строке filepath.

Ответы [ 3 ]

4 голосов
/ 20 марта 2019

Если все ваши пути к файлам имеют тот же формат, что и ваши примеры, вы можете довольно легко создать столбец даты, выполнив:

update date:"D"$8#'103_'filePaths from filesInDir

Затем сопоставьте свои даты с помощью этого столбца.

2 голосов
/ 20 марта 2019

Это то, как вы анализируете filePath для получения даты. Обратите внимание, что «\» является escape-знаком, поэтому вам нужно вместо этого записать «\\» или напрямую получить строку из системной команды.

Созданная таблица

filesInDir:([]filePaths:(":..\\..\\code\\products\\Q\\ExtData\\CIBC\\availability\\Global\\EquityOnly\\daily\\bnyMellon_inventory\\push_list_20190314_040253_Equity.csv";
":..\\..\\code\\products\\Q\\ExtData\\CIBC\\availability\\Global\\EquityOnly\\daily\\bnyMellon_inventory\\push_list_20190314_040306_Equity.csv";
":..\\..\\code\\products\\Q\\ExtData\\CIBC\\availability\\Global\\EquityOnly\\daily\\bnyMellon_inventory\\push_list_20190311_040321_Bond.csv";
":..\\..\\code\\products\\Q\\ExtData\\CIBC\\availability\\Global\\EquityOnly\\daily\\bnyMellon_inventory\\push_list_20190312_999999_Cash.csv"))

Создать столбец даты

update date:{"D"$("_"vs last "\\" vs x)[2]} each filePaths from `filesInDir

У меня также есть список возможных дат, 2019.03.12 2019.03.11 2019.03.14. Как сопоставить список дат со строками таблицы выше, чтобы я мог получить новый столбец, в котором указано значение даты, совпадающее со строкой filepath.

Можете ли вы привести пример этого примера? Не ясно, что вы собираетесь и ожидаете увидеть

Если вы просто хотите, скажем, столбец «Флаг», указывающий, совпадает ли дата в записях с dateRange, вы можете просто использовать in, чтобы сопоставить это.

dateRange:2019.03.12 2019.03.11 2019.03.14
update match:date in dateRange from `filesInDir

Это будет вывод:

enter image description here

0 голосов
/ 20 марта 2019

Другой подход, использующий 0:

update date:raze("   D";"_")0:filePaths from filesInDir

Это зависит от появления _ в ваших файловых путях

...