(kdb+/q) Как вернуть один объединенный вывод при циклическом просмотре двух параметров списка (один во внутреннем цикле/один во внешнем цикле)

Я выполняю поиск по 929 строкам в списке.

Я перебираю 7 разных строк.

Проблема, с которой я сталкиваюсь, заключается в том, как вернуть вывод как один, а не возвращать его 7 раз для каждой искомой строки.

q){{ss[x;y]}[;x]each exec rd from rdeFunc}each exec v from dToCol
..
q)
q)count {{ss[x;y]}[;x]each exec rd from rdeFunc}each exec v from dToCol
7
q)
q)count each {{ss[x;y]}[;x]each exec rd from rdeFunc}each exec v from dToCol
929 929 929 929 929 929 929
q)

Можете ли вы дать образец с некоторыми данными? и подробнее изучить форму и тип данных, которые вы хотите получить в результате? Непонятно, чего вы ожидаете в результате.

rianoc 22.04.2024 20:54

@rianoc это просто стандарт ss, поэтому он вернет первый индекс, в котором строки из exec v from dToCol найдены в строках exec rd from rdeFunc, или, если не найдены, вернет значение null для этой строки

bashprofile84 22.04.2024 21:01
return the output as one как вы хотите агрегировать данные с 7 до 1? count ? raze ? any ? Является ли результат одним списком логических значений? Вложенный список длинных значений?
rianoc 22.04.2024 21:03

@rianoc Я хочу убедиться, что у меня есть все строки с индексами, то есть там, где было найдено совпадение, а затем в оставшихся строках, где совпадений не было найдено в 7 циклах, просто верните ноль. Итак, я думаю, я почти хочу объединить 7 выходных данных в один, где индекс (число) перезаписывает нулевое значение, а остальные нули остаются прежними. lj вот что я думаю

bashprofile84 22.04.2024 21:06
Стоит ли изучать 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
4
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Образец данных:

dToCol:([] v:("aa";"cc";"ff"))
rdeFunc:([] rd:("aa";"bb";"cc";"dd";"ee";"ff"))

Ваш код дает 3 списка из 6:

q)count each {{ss[x;y]}[;x]each exec rd from rdeFunc}each exec v from dToCol
6 6 6

Если вам нужно 6 списков из 3, вы можете использовать flip:

count each flip {{ss[x;y]}[;x]each exec rd from rdeFunc}each exec v from dToCol
3 3 3 3 3 3

Или измените порядок запроса, чтобы flip не требовался:

count each {ss[x] each exec v from dToCol}each exec rd from rdeFunc
3 3 3 3 3 3

Или используйте \:/: каждый слева каждый справа, чтобы еще больше упростить:

https://code.kx.com/q/ref/maps/#left-right-cross

count each ss\:/:[dToCol`v;rdeFunc`rd]
3 3 3 3 3 3

Убедитесь, что все результаты точно совпадают:

r3:ss\:/:[dToCol`v;rdeFunc`rd]
r2:{ss[x] each exec v from dToCol}each exec rd from rdeFunc
r1:flip {{ss[x;y]}[;x]each exec rd from rdeFunc}each exec v from dToCol
r1~r2
1b
r2~r3
1b

Я бы потребовал, чтобы возвращался сам индекс, а не просто логический ответ. Итак, после объединения это будет выглядеть так, как показано ниже ,0 ,0 ,0

bashprofile84 22.04.2024 21:14

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

bashprofile84 22.04.2024 21:15

Добавил {x where count each x} пример, чтобы не возвращать пустую посуду.

rianoc 22.04.2024 21:33
q){{x where count each x}{ss[x;y]}[;x]each exec rd from rdeFunc}each exec v from dToCol () (,22;,22;,22;,22;,22) (,17;,17;,17;,17;,17) (,26;,26;,26;,26;,26;,26;,26;,26;,26;,20;,20;,20;,20;,20;,20‌​;,20;,20;,20;,20;,20‌​;,18;,18;,18;,18;,18‌​;,18;,18;,18;,18;,18‌​;,18;,18) (,23;,23;,23;,23;,23;,23;,23;,23;,23;,23;,23;,23;,23;,35;,35‌​;,35;,35;,35;,35;,35‌​;,35) (,37;,37;,37;,37;,37;,37;,37;,37;,37;,37;,37;,37;,37;,37;,29‌​;,29;,29;,29;,29;,29‌​;,29;,29;,29;,29;,29‌​;,29;,29;,38;,38;,38‌​;,38;,38;,38;,38;,40‌​;,40;,40;,40;,40;,40‌​;,40) (,48;,48;,48;,48)
bashprofile84 22.04.2024 21:39

Кажется, он не возвращает значения null или строку, в которой находится каждый индекс. Если включить значения null для каждого возврата выше (так что для каждого будет возвращено 929 элементов), тогда я смогу увидеть положение каждой строки, содержащей совпадение. У меня есть индексы, но я понятия не имею, какой строке они соответствуют.

bashprofile84 22.04.2024 21:40

Да, именно поэтому я до сих пор не уверен, почему вы недовольны первоначальным результатом. Там есть вся необходимая информация. Эти попытки агрегировать или изменить форму приведут к потере информации. Если все, что вам нужно, это flip исходный результат?

rianoc 22.04.2024 21:48

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

bashprofile84 22.04.2024 21:50

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

rianoc 22.04.2024 22:47

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