Типы, используемые в ваших схемах, должны хорошо сочетаться с функцией, вызываемой обработчиком каналов в TP.Я сломал по умолчанию .u.upd для TP, когда указан таймер.
// All the following is defined in the .u context
upd:{[t;x]
// t - symbol
// x - list of lists
// Check if the first type is a timespan. First list should be a list of timespan
// Vanilla TP will add timespans to the data
if[not -16=type first first x;
// If the current time is greater than the gloabl .u.d then run the timer, causing an EOD
if[d<"d"$a:.z.P;
.z.ts[]];
// Get the timespan
a:"n"$a;
// Append the timespan on, handling differently if only a list of atoms
x:$[0>type first x;
a,x;
(enlist(count first x)#a),x]
];
// Insert the data
t insert x;
// if the handle .u.l is defined, add to the logfile and increment the total count .u.j
if[l;
l enlist (`upd;t;x);j+:1];
}
Из этого вы можете видеть, что по умолчанию TP будет считать, что первый столбец является временным, а если нет, то добавляется временной интервал.Это полезно, если вы уже отправляете временную метку, так как вы можете извлечь время, которое потребовалось из канала, который обрабатывается TP.
Отправив сначала строку, TP добавит дополнительный столбец в ваши данные.Это может привести либо к несоответствию (если вы уже указали временной интервал), либо к ошибке типа (путем вставки временных интервалов в столбец строки и наоборот).
Изменение всего этого было бы тривиальным.Например, чтобы проверить второй столбец на промежуток времени вместо первого, это будет просто первый первый 1_ x.Возможно, вы всегда захотите проверить EOD (т. Е. Если вы действительно отправляете данные с временным интервалом в качестве первого столбца, и в этом случае вы должны поместить вызов .z.ts [] вне первого оператора if.
Подводя итог
- Порядок столбцов зависит от используемой вами функции обновления. Добавление временного интервала позволяет улучшить синхронизацию пропускной способности ваших данных от подачи до приема. В зависимости отто, что вы пытаетесь сделать, вы можете вместо этого добавить временную метку или просто использовать временные значения, которые вы добавляете в свой обработчик каналов.
- Использование строк и символов подробно здесь .Я хотел бы сказать, что Ferenc частично неверен, настоятельно рекомендуется использовать столбец с именем sym, чтобы соответствовать стандартам, но вы можете обновить свой код, чтобы относительно легко использовать другое имя столбца (вам нужно настроить tick.q, чтобы непроверьте время столбцов и sym.) Это может усложнить, в том числе, работу других.