Фильтр кэшированных запросов sqlJdbs в Pentaho CE
Я использую запрос sqlJdbs в качестве поставщика данных для своих элементов управления CCC. Я использую геопространственный запрос в своем запросе, поэтому я кеширую свои результаты (Cache=True). В противном случае запрос сделан долго.
Работает нормально. Однако я должен использовать параметры в своем запросе для фильтрации результирующих строк:SELECT ...
FROM ...
WHERE someField IN (${aoi_param})
Есть ли способ кешировать полный набор строк, а затем применить WHERE
кэшировать результаты, не перестраивая новый кэш для каждого набора значений в ${aoi_param}
?
Какова лучшая практика?
1 ответ
Итак, я не совсем уверен, что это лучшая практика, но я решил свою проблему следующим образом:
я включен
aoi_param
к слушателям и параметрам моего контроля диаграммыЗатем я отфильтровал набор данных в 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;
}
- не входит
WHERE someField IN (${aoi_param})
из запроса моего sql над компонентом sqlJdbc