Как бы мне не хотелось отвечать на любой вопрос онлайн-форума, опровергая предположение, я действительно должен здесь, не использовать точки в именах столбцов, это вызовет проблемы . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * - есть причина присвоения имен столбцам.
Основная причина возникновения ошибок состоит в том, что использование точечной нотации в qSQL зарезервировано для разрешения связанных столбцов . Мы можем увидеть, как это на самом деле работает, проанализировав сам запрос
q)parse "select a.b from tab"
?
`tab
()
0b
(,`b)!,`a.b // Here the referencing of a linked column b via a is occuring
// Compared to a normal select
q)parse "select b from tab"
?
`tab
()
0b
(,`b)!,`b
В зависимости от будущей обработки могут возникнуть другие проблемы, такие как q попытка обработать имена столбцов как пространства имен или работа с каждой частьюимя с оператором точки.
Использование точечной нотации в именах столбцов затруднит дальнейшее развитие и заставит всех остальных пользователей kdb использовать обходные методы. Развитие будет медленным и столкнется со многими ошибками.
Я бы посоветовал, если в столбец необходимо включить периоды, вы создадите API для внешних пользователей, чтобы использовать его для перевода запросов в очищенные формы.
Вы можете легко дезинфицировать всю таблицу с помощью .Q.id
q)tab:enlist `a.b`c`d!(1 2 3)
q)tab:.Q.id tab
q)sel:{[tab;cl] ?[tab;();0b;((),.Q.id each cl)!((),.Q.id each cl)]}
q)sel[tab;`a.b]
ab
--
1