在Pentaho CE中过滤缓存的sqlJdbs查询

时间:2017-05-12 17:46:33

标签: pentaho pentaho-ctools ccc

我使用sqlJdbs查询作为我的CCC控件的数据提供程序。我在查询中使用地理空间请求,这是我缓存结果的原因(Cache = True)。否则请求很长。

工作正常。但是我必须在查询中使用参数来过滤结果行: SELECT ... FROM ... WHERE someField IN (${aoi_param})

是否有某种方法可以缓存完整的行集,然后将WHERE应用于缓存的结果,而无需为${aoi_param}中的每组值重建新的缓存?

最佳做法是什么?

1 个答案:

答案 0 :(得分:0)

所以,我不确定这是最好的做法,但我这样解决了我的问题:

  1. 我将using System.Reflection; if (productModel.GetType().GetTypeInfo().GetDeclaredProperty(propertyName) != null) { } 添加到我的图表控件的听众参数

  2. 然后我过滤了帖子提取中的数据集:

  3. 
    
    aoi_param
    
    
    

    1. 从我的 sql over sqlJdbc 组件的查询中排除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; }