页面树结构
转至元数据结尾
转至元数据起始

(本文档仅供参考)

问题描述:

使用数据模型直连模式,创建连接Clickhouse(分片集群)时,查询报错。

报错信息:

BuildTime: 2024-08-13 17:29:58
TAG: Hotfix_SmartbiV11_20240812 
Tid: f7cd0101570c4766
HostName: user-virtual-machine

查询失败:errorMessageMondrian Error:Internal error: Populating member cache with members for [[C_YEAR].[C_YEAR], [pattern].[pattern]]; sql=[select `T2`.`C_YEAR` as `c0`, `T0`.`pattern` as `c1` from `dw`.`ads_pb_print_stat` as `T0` inner join `dw`.`dim_date` as `T2` on `T0`.`f_approve_time` = `T2`.`C_DATE` group by `c0`, `c1` order by CASE WHEN (`c0`) IS NULL THEN 1 ELSE 0 END, `c0` ASC, CASE WHEN (`c1`) IS NULL THEN 1 ELSE 0 END, `c1` ASC limit 1000]
errorStackTrace=mondrian.olap.MondrianException: Mondrian Error:Internal error: Populating member cache with members for [[C_YEAR].[C_YEAR], [pattern].[pattern]]; sql=[select `T2`.`C_YEAR` as `c0`, `T0`.`pattern` as `c1` from `dw`.`ads_pb_print_stat` as `T0` inner join `dw`.`dim_date` as `T2` on `T0`.`f_approve_time` = `T2`.`C_DATE` group by `c0`, `c1` order by CASE WHEN (`c0`) IS NULL THEN 1 ELSE 0 END, `c0` ASC, CASE WHEN (`c1`) IS NULL THEN 1 ELSE 0 END, `c1` ASC limit 1000]
at mondrian.resource.MondrianResource$_Def0.ex(MondrianResource.java:1002)
at mondrian.olap.Util.newInternal(Util.java:2689)
at mondrian.olap.Util.newError(Util.java:2705)
at mondrian.rolap.SqlStatement.handle(SqlStatement.java:414)
at mondrian.rolap.SqlStatement.execute(SqlStatement.java:299)
at mondrian.rolap.RolapUtil.executeQuery(RolapUtil.java:360)
at mondrian.rolap.sqlitecache.DataCacheSQLiteManager.createSqlStatementBySQLiteCache(DataCacheSQLiteManager.java:392)
at mondrian.rolap.sqlitecache.DataCacheSQLiteManager.createSqlStatementBySQLiteCache(DataCacheSQLiteManager.java:339)
at mondrian.rolap.SqlTupleReader.prepareTuples(SqlTupleReader.java:543)
at mondrian.rolap.SqlTupleReader.readTuples(SqlTupleReader.java:772)
at mondrian.rolap.SqlTupleReader.readTuples(SqlTupleReader.java:742)
at mondrian.rolap.RolapNativeSet$SetEvaluator.executeList(RolapNativeSet.java:378)
at mondrian.rolap.RolapNativeSet$SetEvaluator.execute(RolapNativeSet.java:239

解决方案:

主要就是不支持分布式子查询而导致的报错。

如果是单纯的SQL语句,可以将将inner join 改成 global join

如果是解决产品本身的连接查询,可以添加配置:set distributed_product_mode = 'global'(在user.xml里);

例:

  • 无标签