KDB: как вы инициализируете столбец в таблице как String - PullRequest
0 голосов
/ 19 декабря 2018

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

meta select AsOfDate from t
c         t   f  a
AsOfDate 

После вставки записи:

meta select AsOfDate from t
c         t   f  a
AsOfDate  C

Есть ли более чистый способ присвоения типа данных строки столбцу?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Некоторые разработчики хранят строку инициализации / прототипа (строка 0), которая никогда не используется и не используется.Значения ключей таковы, что вызывающий код не сможет их получить.Или какой-то столбец флага «мягкого удаления»

Как только в таблице появятся реальные строки, вы можете удалить строку прототипа, но логика будет грязной, и это может быть дорогостоящим, если вы удалите эту строку, когда есть миллионыстрок в таблице или она сохраняется на диске.

Хотелось бы, чтобы "мета" таблицы была липкой, поэтому при удалении всех строк она сохраняет ВСЕ типы вокруг.

q)tbl:([] a:1; b:1.1; c:1#enlist "abc")
q)meta tbl
c| t f a
-| -----
a| j    
b| f    
c| C    
q)meta 1_tbl
c| t f a
-| -----
a| j    
b| f    
c|
0 голосов
/ 20 декабря 2018

К сожалению, kdb + не позволяет определять типы столбцов как список списков при создании таблицы (строка - это просто список списков символов).

Вы правильно заметили, что вам нужно убедиться, чтоВаша первая запись имеет строковый тип.

...