#qliksense
#qliksense
Вопрос:
Привет, ребята,
это сводит меня с ума. Я попытаюсь объединить некоторые значения из одной таблицы, чтобы использовать их в предложении where в другом операторе. Это похоже на этот скрипт.
LIB CONNECT TO 'MSSQLSERVER';
TempTab:
Load KST;
SQL SELECT KST FROM vKST WHERE Region = 'Driver';
Let Test = Concat(distinct KST, ',');
drop Table TempTab;
// ...
LIB CONNECT TO 'ORACLESERVER';
Foo:
Load *;
SQL SELECT Value FROM KSTvalues WHERE KST IN ($(Test));
Моя проблема в том, что переменная «Test» вычисляется только до null. У кого-нибудь есть рабочая идея для этого?
Ответ №1:
В этом случае Concat
функция должна использоваться в контексте таблицы, чтобы получить все значения из поля.
Итак, чтобы получить все значения, вам нужно сначала загрузить их во временную таблицу и в ней выполнить конкатенацию. А затем используйте переменную, чтобы получить результирующее значение поля.
Взгляните на приведенный ниже сценарий. Конкатенация выполняется в TempTable
, а затем с помощью функции peek для получения значения ConcatField
vConcatValues
переменной into (я удаляю значение TempTable
в конце, потому что оно не требуется после заполнения переменной)
TempTable
будет иметь следующее содержимое:
И vConcatValues
будет:
RawData:
Load * inline [
Values
Value1
Value1
Value2
Value3
Value4
Value5
];
TempTable:
Load
Concat(distinct Values, ',') as ConcatField
Resident
RawData
;
let vConcatValues = peek('ConcatField');
// We dont need the TempTable anymore and can be dropped
Drop Table TempTable;
PS вероятно, предложение sql вызовет ошибку, поскольку значения не будут определены как строки. В этом случае вы можете использовать что-то вроде этого:
TempTable:
Load
Concat(distinct Values, '","') as ConcatField
Resident
Raw
;
Использование ","
в качестве разделителя приведет к Value1","Value2","Value3","Value4", "Value5
(см. Пропущенное "
впереди и в конце)
Нам придется немного изменить переменную, чтобы исправить это:
let vConcatValues = '"' amp; peek('ConcatField') amp; '"';
И результат тогда будет:
"Value1","Value2","Value3","Value4", "Value5"