1

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

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

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

最佳做法是什么?

4

1 回答 1

0

所以,我不确定这是否是最佳实践,但我以这种方式解决了我的问题:

  1. 我包含在我的图表控件aoi_param侦听器参数中

  2. 然后我过滤了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;
}

  1. 通过 sqlJdbc组件WHERE someField IN (${aoi_param})从我的 sql 查询中排除
于 2017-05-17T07:20:02.130 回答