Значение getArgument блоков данных нельзя использовать в предложении Spark SQL IN - PullRequest
0 голосов
/ 09 мая 2019

Я получаю список разделенных запятыми строк из виджета блокнота данных, но не могу использовать это значение в предложении IN Spark SQL

Я нахожусь в ячейке% sql в блокноте и не хочу переходить на тип ячейки% py или% scala.

Кроме того, я не могу использовать оператор SELECT в предложении IN, поскольку предложение IN НЕ находится в фильтре выбора. Получается сообщение об ошибке: «Подзапросы предиката IN / EXISTS могут использоваться только в фильтре», если вы попробуете этот синтаксис.

Здесь ITEM - виджет, созданный таким образом в ячейке% sql

СОЗДАТЬ ТЕКСТОВЫЙ ПУНКТ ПО УМОЛЧАНИЮ "'0111', '0112'"

select *
from items_table
where ItemSKU in (string(getArgument("ITEM")));

или

select *
from items_table
where ItemSKU in (getArgument("ITEM"));

не возвращает никаких строк

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

select *
from items_table
where ItemSKU in ('0111','0112');

Я получаю ожидаемый результат.

1 Ответ

0 голосов
/ 09 мая 2019

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

Если вы посмотрите на сигнатуру функции multiselect

multiselect(name: String, defaultValue: String, choices: Seq, label: String)

Вы увидите, что defaultValue принимает только строку, в то время как choices является Sequence.Я знаю, что это функция scala, и вы ищите версию SQL, но это подразумевает, что здесь не предусмотрен параметр по умолчанию multiselect, который на самом деле имеет несколько вариантов выбора.

Ссылка - https://docs.databricks.com/user-guide/dev-tools/dbutils.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...