在 Pentaho CE 中过滤缓存的 sqlJdbs 查询
Filter cached sqlJdbs query in Pentaho CE
我使用 sqlJdbs 查询作为我的 CCC 控件的数据提供程序。我在查询中使用地理空间请求,这就是我缓存结果的原因 (Cache=True)。否则请求长。
它工作正常。但是我必须在查询中使用参数来过滤结果行:
SELECT ...
FROM ...
WHERE someField IN (${aoi_param})
有没有办法缓存完整的行集,然后将 WHERE
应用于缓存的结果,而无需为 ${aoi_param}
中的每组值重建新的缓存?
最佳做法是什么?
所以,我不太确定这是最佳做法,但我这样解决了我的问题:
我将 aoi_param
添加到图表控件的 Listeners 和 Parameters
然后我在Post中过滤数据集fetch:
function f(data){
var _aoi_param = this.dashboard.getParameterValue('${p:aoi_param}');
function isInArray(myValue, myArray) {
var arrayLength = myArray.length;
for (var i = 0; i < arrayLength; i++) {
if (myValue == myArray[i]) return true;
}
return false;
}
function getFiltered(cdaData, filterArray) {
var allCdaData = cdaData;
cdaData = {
metadata: allCdaData.metadata,
resultset: allCdaData.resultset.filter(function(row){
// 2nd column is an AOI id in my dataset
return isInArray(row[2], filterArray);
})
};
return cdaData;
}
var dataFiltered = getFiltered(data, _aoi_param);
return dataFiltered;
}
- 从我的 sql 对 sqlJdbc 组件
的查询中排除了 WHERE someField IN (${aoi_param})
我使用 sqlJdbs 查询作为我的 CCC 控件的数据提供程序。我在查询中使用地理空间请求,这就是我缓存结果的原因 (Cache=True)。否则请求长。
它工作正常。但是我必须在查询中使用参数来过滤结果行:
SELECT ...
FROM ...
WHERE someField IN (${aoi_param})
有没有办法缓存完整的行集,然后将 WHERE
应用于缓存的结果,而无需为 ${aoi_param}
中的每组值重建新的缓存?
最佳做法是什么?
所以,我不太确定这是最佳做法,但我这样解决了我的问题:
我将
aoi_param
添加到图表控件的 Listeners 和 Parameters然后我在Post中过滤数据集fetch:
function f(data){
var _aoi_param = this.dashboard.getParameterValue('${p:aoi_param}');
function isInArray(myValue, myArray) {
var arrayLength = myArray.length;
for (var i = 0; i < arrayLength; i++) {
if (myValue == myArray[i]) return true;
}
return false;
}
function getFiltered(cdaData, filterArray) {
var allCdaData = cdaData;
cdaData = {
metadata: allCdaData.metadata,
resultset: allCdaData.resultset.filter(function(row){
// 2nd column is an AOI id in my dataset
return isInArray(row[2], filterArray);
})
};
return cdaData;
}
var dataFiltered = getFiltered(data, _aoi_param);
return dataFiltered;
}
- 从我的 sql 对 sqlJdbc 组件 的查询中排除了
WHERE someField IN (${aoi_param})