У меня есть таблица под названием Details, которая имеет 2 столбца: person(s) и personData(dict). personData — это, по сути, словарь, который содержит всю информацию о человеке.
Если я хочу добавить дополнительную запись в словарь, как мне это сделать? Я хочу, чтобы данные personData были обновлены для хранения telNO.
тел.: 1234 9594 (это список номеров) когда я бегу:
(flip details`personData),enlist[`telNo]!(enlist telNos)
работает, но это я разбираю словарь, а мне нужно обновить всю таблицу сразу.
Предполагая
q)show t:([]person:`a`b;personData:(`name`age!(`aa;1);`name`age!(`bb;2)))
person personData
------------------------
a `name`age!(`aa;1)
b `name`age!(`bb;2)
Вы можете обновить одну запись с помощью
q)update @[;`telNo;:;111]personData from t where person=`a
person personData
----------------------------------
a `name`age`telNo!(`aa;1;111)
b `name`age!(`bb;2)
или все они с
q)update @'[;`telNo;:;111 222]personData from t
person personData
----------------------------------
a `name`age`telNo!(`aa;1;111)
b `name`age`telNo!(`bb;2;222)
Установить образец:
t:([] person:`a`b;personData:(`name`age`address!(`jo;7;"neverland");`name`age`DOB!(`mary;42;1982.01.05)))
t
person personData
--------------------------------------------
a `name`age`address!(`jo;7;"neverland")
b `name`age`DOB!(`mary;42;1982.01.05)
Обновлять:
update personData:{x[`tel]:y;x}'[personData;1234 5678] from t
person personData
-----------------------------------------------------
a `name`age`address`tel!(`jo;7;"neverland";1234)
b `name`age`DOB`tel!(`mary;42;1982.01.05;5678)
Или используя поправку .
:
update personData:.[personData;(::;`tel);:;1234 5678] from t
person personData
-----------------------------------------------------
a `name`age`address`tel!(`jo;7;"neverland";1234)
b `name`age`DOB`tel!(`mary;42;1982.01.05;5678)