Mondrain支持kylin問題解決

Mdxjava

select {[MEASURES].[UNITPRICE],[MEASURES].[NUMBER]} on columns, {[CUSTOMER].[GENDER].members} on rows from saleinfosql

問題.net

問題1: mondrian轉換過來的sql kylin不支持:Cartesian Join is not supported. while executing SQL: "select "CUSTOMER"."GENDER" as "c0", sum("SALE"."UNITPRICE") as "m0", sum("SALE"."NUMBER") as "m1" from "SALE" as "SALE", "CUSTOMER" as "CUSTOMER" where "SALE"."CUSID" = "CUSTOMER"."CUSID" group by "CUSTOMER"."GENDER" 不支持笛卡兒積的寫法=》對應源碼修改1,2,3code

問題2:No realization found for OLAPContext, MODELUNMATCHEDJOIN, rel#993:OLAPTableScan.OLAP.[](table=[PUBLIC, SALE],ctx=,fields=[0, 1, 2, 3, 4, 5, 6, 7]), JoinDesc [type=INNER, primarykey=[CUSID], foreignkey=[CUSID]] while executing SQL: "select "CUSTOMER"."GENDER" as "c0", sum("SALE"."UNITPRICE") as "m0", sum("SALE"."NUMBER") as "m1" from "SALE" as "SALE" join "CUSTOMER" as "CUSTOMER" on "SALE"."CUSID" = "CUSTOMER"."CUSID" group by "CUSTOMER"."GENDER 源碼修改1,2,3執行完以後,轉換出的sql 中join 沒有帶left,kylin不支持。對應解決方法是修改4。get

源碼修改源碼

1.Dialect.java的枚舉類型DatabaseProduct中新增KYLIN.io

2.JdbcDialectImpl.java的getProduct中新增對kyin的支持:else if (upperProductName.equals("KYLIN")){ return DatabaseProduct.KYLIN; }table

3.新增KylinDialect.java類class

  • @author wangzhou
  • @date 2018年7月10日
  • 增長kylin支持
  •  
  •  
  • package mondrian.spi.impl;

import java.sql.; import mondrian.spi.;import

public class KylinDialect extends JdbcDialectImpl { public static final JdbcDialectFactory FACTORY;

public KylinDialect(final Connection connection) throws SQLException {
    super(connection);
}

public boolean allowsCountDistinct() {
    return false;
}

public boolean allowsJoinOn() {
    return true;
}

static {
    FACTORY = new JdbcDialectFactory(KylinDialect.class, Dialect.DatabaseProduct.KYLIN) {
        protected boolean acceptsConnection(final Connection connection) {
            return super.acceptsConnection(connection);
        }
    };
}

}

4.修改SqlQuery.java的toBuffer()中的三目運算String fromSep = joinCount > 0 ? " join " : ", ";修改成String fromSep = joinCount > 0 ? " left join " : ", ";

相關文章
相關標籤/搜索