У меня есть (большой) файл CSV с некоторыми данными. И у меня есть импортер из code.kx.com
, использующий .Q.fsn
colnames:`Symbol`Date`Time`Sequence`Exchange`Type`Level`Condition`Price`Size`BuyerID`SellerID
.Q.fsn[{`:newCreatedFile upsert flip colnames!("SDTISSISFISS";",") 0:x};`:C:/myDir/data.csv 5000000]
Этот код создает файл с именем newCreatedFile
с данными из data.csv
, предполагая, что файл больших данных обрабатывает данные фрагментами по 5000000 байт.
Вопрос:
Я хочу создать 2 отдельных файла из этих данных, и, скажем, основой для различия являются значения в столбце «Условие». Для каждой строки, если значение в столбце «Условие» равно x, y или z, поместить в файл A.csv, иначе — B.csv.
Вот псевдокод оператора if:
$[Condition in `x`y`z; Afunction ; Bfunction]
Afunction:{`:newA upsert flip ...};
Bfunction:{`:newB upsert flip ...};
Как мне настроить оператор if? В настоящее время у меня есть:
$[datatable.Condition = `SomeCondition; fileA;fileB]
Но я получаю ошибку типа. Как мне сопоставить каждое значение определенного столбца?
Должен ли он проверять при импорте исходного файла данных или после того, как файл данных был создан в таблице в kdb
?