Как использовать изменение в операторе обновления

У нас есть вкладка «Таблица».

tab:update volume:0n from ([] date:2024.01.01+til 10;sym:10?`appl`msgt`googl;volume:10#(enlist 0.5+300?til 100)) where i in (1;5;8);

Мы хотим обновить объем столбца таким образом, чтобы скопировать значение сегмента индекса с 299 по 200 и сделать нулевые сегменты с 201 по 299.

Это мы можем сделать с помощью такого изменения, но изменение выдает ошибку типа, когда том пуст/нулевой.

В этом поведении мы хотим не выдавать ошибку, а возвращать пустое/нулевое значение как есть и обрабатывать только тогда, когда что-то есть в столбце тома.

//original value
first exec volume from select from tab where i=0

//updated expected values, works where volume is not null else gives type error
first exec volume from {[start;end;tab] tt:.[tab;(::;`volume;200);:;.[tab;(::;`volume;299)]]; .[tt;(::;`volume;start+til end-start);:;0f]}[201;299;select from tab where i=0]

Но это дает ошибку типа, когда объем равен нулю, когда мы передаем всю таблицу

first exec volume from {[start;end;tab] tt:.[tab;(::;`volume;200);:;.[tab;(::;`volume;299)]]; .[tt;(::;`volume;start+til end-start);:;0f]}[201;299;select from tab]

Как лучше всего проверить, равен ли объем нулю, а затем вернуть значение null/пусто, сделать что-нибудь еще, выполнить обработку что-то вроде этого

update volume:{ $[count x;"do processing here using amend"; x] }'[volume] from tab
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
50
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Переключение переменных start и end для y и z соответственно.

q)update volume:{$[1=count x;x;@[;y+til z-y;:;0f]@[x;200;:;x 299]]}'[volume;201;299]from tab

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

q)update volume:{@[;y+til z-y;:;0f]@[x;200;:;x 299]}'[volume;201;299]from tab where not 1=count each volume Если с некоторыми не работает, то приятно их отфильтровать where
rianoc 22.08.2024 17:33

Другие вопросы по теме