Вы пытаетесь привести к символу в памяти (временному) или к символу на диске (постоянному)? Если в памяти вы не должны пытаться приводить к символу для всех дат, вы можете просто привести к символу, как вы выбираете из него (с фильтром даты), или создать функцию-обертку для обработки этого. Вы должны проанализировать, насколько повторяются строки, так как каждая строка, которую вы приводите к символу, становится интернированной и потребляет память. Если строки очень уникальны (например, длиной), то вы можете создать слишком много интернированных символов, что приведет к увеличению памяти.
Если на диске вы должны использовать утилиту Kx dbmaint - у нее есть конкретный c пример приведения из списка символов (строки) к перечисляемому символу.
https://github.com/KxSystems/kdb/blob/master/utils/dbmaint.md#fncol
Вы должны быть очень осторожными - опять же, вам нужно проанализировать строковый столбец, чтобы убедиться, что он достаточно повторяющийся чтобы гарантировать приведение к символу (добавляя как можно меньше новых символов в файл sym). Если строки очень уникальны, вы должны , а не привести к символу, так как рискуете загрязнить файл sym большим количеством новых символов.
В конечном счете, наиболее эффективный подход - сделать постоянные изменения на диске, предполагая, что строки повторяются (например, короткие)