构建FROM SQL
解析事实表VO中的所有维度信息,收集需要关联的维表信息成FromConditionDto<br>
根据关联表信息FromConditionDto构建InnerWithVO的FromSql部分,从事实表和维表中select * 后根据配置的关联关系join起来<br>
构建SELECT SQL
获取每个事件的可分析维度集合,合并成事实表的可分析维度集合<br>
根据统一维度获取每个使用到的维度的可关联事实表维度集合,判断维度的可关联事实表维度集合与事实表的可分析维度集合是否有交集,有交集则使用交集的维度,否则报错<br>
如果交集只有一个,直接select nvl(列表达式, 'OTHER') as 列名(如果是衍生维度,则使用衍生维度构建出来的表达式),并将维度id和列名对应字典关系存起来<br>
针对交集有多个情况,使用case when 针对每个事件使用不同的维度(如果有衍生维度则会嵌套case when,不过这是合法的),然后重命名为统一维度的名字,然后把维度id和列名对应字典关系存起来
构建WHERE SQL
根据事实表使用到的事件,将事件id条件构建成WHERE语句,如果是衍生事件,则使用衍生事件的条件表达式