Как написать функциональную форму в KDB+/Q с подстановочным знаком внутри предложенияwhere?

В качестве примера обычного запроса qSQL мы могли бы написать:

select from table where sym like "temp*"

Чтобы выбрать любые элементы в столбце `sym, которые начинаются с «temp*», за которым следует любая последовательность символов.

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

?[trade; enlist(like;`newCol;($:;enlist`ABC)); 0b; ()] это хорошо работает в блокноте Jupyter KX Academy, однако при этом не учитываются подстановочные знаки.

Мой анализируемый оператор выбора возвращает мне следующее:

?
`table
,,(';(like;`sym);(*;`temp))
0b
()

Однако я не понимаю, как это написать, в Интернете я ничего не нашел. Пожалуйста помоги.

Ваш проанализированный оператор выбора неверен. Попробуйте выполнить приведенное ниже, чтобы убедиться в этом. q)parse"select from table where sym like \"temp*\"" Это должно дать вам отправную точку для создания эквивалентного функционального утверждения.

cillianreilly 19.04.2024 12:15

Спасибо. Я должен был знать. Глупая ошибка.

kannick 19.04.2024 12:48
Стоит ли изучать 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
2
89
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Когда я запускаю оператор:

parse"select from table where sym like \"temp*\""

Я получил:

?
`table
,,(like;`sym;"temp*")
0b
()

что равно:

?[`table;enlist(like;`sym;"temp*");0b;()]

Вы уверены, что правильно разобрали исходный оператор?

Спасибо за помощь, вы были правы, да! ^ выше - ответ, который я искал.

kannick 19.04.2024 12:48
Ответ принят как подходящий

При построении запроса вы можете использовать обратную косую черту, чтобы избежать символов кавычек, чтобы обеспечить анализ вашего запроса:

q)parse "select from table where sym like \"temp*\""
?
`table
,,(like;`sym;"temp*")
0b
()

который будет сформирован в:

?[table;enlist (like;`sym;"temp*");0b;()]

Существует хороший скрипт от kx, который помогает формировать функциональные выборки:

https://code.kx.com/q/wp/parse-trees/#appendix

Огромное спасибо, я чувствую себя немного глупо из-за того, что не знаю, как правильно анализировать строки. Теперь это работает идеально, спасибо.

kannick 19.04.2024 12:47

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