qliksense - 在 SQL 语句之间的 loadscript 中连接
问题描述
嘿,伙计们,
它让我发疯。我将尝试连接一个表中的一些值,以便在另一个语句的 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));
我的问题是变量“测试”只计算为空。有没有人对此有一个可行的想法?
解决方案
在这种情况下Concat
,函数应该在表的上下文中使用,以便从字段中获取所有值。
因此,要获取所有值,您必须首先将它们加载到临时表中并在其中执行连接。然后使用变量获取结果字段值。
看看下面的脚本。执行连接TempTable
,然后使用peek函数获取变量的值(我ConcatField
在最后vConcatValues
删除,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 = '"' & peek('ConcatField') & '"';
结果将是:
"Value1","Value2","Value3","Value4", "Value5"
推荐阅读
- python-3.x - 无法使用硒(python)单击下拉列表中的一项
- oracle - oracle 执行立即命令连接
- python - python中的递归函数来查找数字的位数之和
- android - OpenGL ES 2.0 Android 绘制带纹理的三角形
- swift - 在链接 RxSwift 和 Alamofire 的异步请求中调用 func
- sql - 在多列上排序后为每个 id 选择值
- react-native - 如何使用原生基础自定义项目选择器的背景颜色
- graphql - 将多个 GQL 突变捆绑到一个 HTTP 调用是否是一种好习惯
- python - 有什么方法可以删除 Python 中的嵌套类?
- javascript - 使用 test 和 react-testing-library 测试一个反应组件