[
https://issues.apache.org/jira/browse/KYLIN-5692?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
liyang closed KYLIN-5692.
-------------------------
> Modify nested computed column expression, save model failed
> -----------------------------------------------------------
>
> Key: KYLIN-5692
> URL: https://issues.apache.org/jira/browse/KYLIN-5692
> Project: Kylin
> Issue Type: Bug
> Components: Modeling
> Affects Versions: 5.0-beta
> Reporter: Yaguang Jia
> Assignee: Yaguang Jia
> Priority: Major
> Fix For: 5.0.0
>
>
> h2. Root Cause
> The problem lies in the method discardInvalidColsAndMeasForBrokenModel. The
> expression of cc is not expanded, while innerExpression is expanded. This
> method only collects the original columns in the table. When there is nested
> computed column, some computed columns will not be collected, resulting in
> this method mistakenly judging certain cc columns as invalid.
> h2. Fix Design
> When parsing cc, still use innerExpression, but innerExpression is compatible
> with Spark syntax. Directly handing it over to Calcite for SQL parsing and
> obtaining tables and columns may encounter syntax issues such as unsupported
> functions. Therefore, simply call the QueryUtil.adaptCalciteSyntax method.
>
> ----
> h2. Root Cause
> 问题出在discardInvalidColsAndMeasForBrokenModel这个方法, cc 的 expression 是不展开的,而
> innerExpression 是展开的。这个方法中只收集了表中的原始列,当存在可计算列的嵌套是,那么有些可计算列是不会被收集的,从而这个方法就误判了某些
> cc 列是非法的。
> h2. Fix Design
> 在解析 cc 的时候依然使用 innerExpression,但 innerExpression 是 spark 语法兼容的,直接交给 Calcite
> 执行 SQL 解析获取表和列可能会存在函数不支持等语法问题,因此调用一下 QueryUtil.adaptCalciteSyntax 这个方法即可。
--
This message was sent by Atlassian Jira
(v8.20.10#820010)