schema
2021-12-10 17:07:45 3 举报
schema
作者其他创作
大纲/内容
获取表中所有的列
处理Named sets标签MDX 语句的 WITH SET 子句允许您声明可在整个查询中使用的集合表达式
SQL Model
4.遍历unlinkedDimensions如果存在则报错
measureGroup.factCountMeasure == null
registerExpr
2.创建hierarchy
registerColumn
第三方xml解析工具
new RolapDimension
1. 获取fact事实表
处理key标签
判断有没有schema
处理xml中的计算字段
1.遍历xmlMeasure度量部分
加载计算成员和命名集。
new RolapStar.Column()
loadStage1
createMeasureRef
initCubeHierarchy
3.创建维度
new RolapMeasureGroup
getOrCreateDimension
3.获取各个属性值进行创建
Validate keys.
解析xml结果
遍历所有的计算字段
创建hiederarchy下的All成员
physCalcColumn.compute();
unresolvedMeasure.apply()
xmlParser.parse
6.遍历第3中 初始化后的attributeList创建level和hierarchy
addForeignKeyLink
Create named sets
通过数据库第三方的databaseMetaData拿到所有表和字段
1.获取维度名和类型
1.添加度量Measure部分
1. 生成uniqueName
5.遍历xml中Hierarchy标签,但我们没有使用
cube.init
遍历MeasureGroups中每一个measure去加载
遍历jdbcTable添加
3.遍历xmlAttribute创建attribute标签,这里只是将xml中参数初始化进行创建对象attribute
4.遍历attributeList处理Properties,但没有使用
注册Role标签角色权限
new RolapCube
table.makeMeasure((RolapBaseCubeMeasure) measure);
真正开始加载的地方
7.校验key
Create roles.
new RolapAttributeImpl
RolapSchemaPool
解析link标签表关系
loadTables(\"%\");
createCalcMembersAndNamedSets
Create cubes
生成sql校验计算字段
5.后初始化cube
从schenma中加载表定义的列(不存在则不加载)
暂不使用
createAttribute
new RolapStar.Measure(
view标签
创建level并在hierarchy下添加levelADD_T_1.Hierarchy.All .level
registerKey
2.初始化一个事实表的
dimensionName、dimensionType
jdbcTable= physSchema.jdbcSchema.getTable(name);
不为null
遍历xmlLink放入unresolvedLinkList
measure.getAggregator().deriveDatatype
new MondrianDef.Schema(def)
遍历xml中cube
3.判断measureGroup中是否有count度量,如果没有则进行创建一个count的度量。目的:创建一个度量用于查询事实表数量。
columnsByName
1. 创建cube
通过数据jdbc获取表
RolapSchemaLoader.createSchema
4.去遍历unresolvedMeasures时候创建去处理聚合表度量的部分
遍历PhysicalSchema标签下所有子元素
生成sql查询表是否存在
registerLevel
2.初始化dimension
2.校验aggreator name的值
initCubeHierarchy中创建createMemberReader
4.遍历DimensionLinks,这里unlinkedDimensions中放入未处理的,如果处理则remove掉一个。并且会根据标签类型:FactLink、CopyLink、ReferenceLink、ForeignKeyLink
创建hierarchy层级,在没有hierarchy创建时使用dimension的名称
registerAttribute
loadStage0
5.验证计算字段。 请注意,计算列可以引用其他表中的列。 允许前向引用,但引用不能是循环的。
加载我们自定义函数,以及mondrian默认有的函数
getTables
schema.initFunctionTable(mapNameToUdf.values());
InlineTable标签
RolapHierarchy
addJoinsTable(physTable);
收集聚合表中使用的关系
处理左右连表
2.遍历每一个dimesions标签进行创建
1.获取table、column
5.创建RolapBaseCubeMeasure
SELECT NUM_ROWS FROM user_tables WHERE TABLE_NAME = 'F_OUTPATIENT_COSTS_AGGR'
addColumn(column);
cube.getSchemaReader().withLocus().lookupCompound()
初始化RolapSchemaReader
1.加载物理表
初始化mdx函数以及schema中mdx自定义函数
4.创建RolapLevel
4.创建attribute元素
7.创建Rolap的维度并进行初始化
table标签
resolve()
3.遍历MeasureGroup,处理聚集表的东西
创建
将查询出来的列转化为mondrian的PhysColumn对象
校验维表与事实表链接关系key
4.解析links标签
initCubeDimension
2.获取attribute对应的列
判断是否为聚合表进行创建apply
4.处理dataType、formatString、visible、larder的属性
1.createSyntheticPhysicalSchema
RolapCubeDimension
创建一个包含0行1列的表。这是schema的基础表。在schema的table中第一行empty,作用是为不需要连表的查询提供。比如:在校验计算字段时生成的sql,直接从table查询,又或者一个维度的查询。
8.进行初始化这里会初始化LevelReader并进行赋值,这里会levelReader会涉及之后的level的处理
loadStage2
初始化
3.遍历元素,创建表,确保表名是唯一的。注册显式定义的列,并从JDBC加载列。收集计算后的列,稍后解析。
初始化查询所有表和字段
6.添加表之间的连接关系
level.getClosedPeer()
2.处理聚集表中的度量,将聚集引用的度量与度量关联
没有加载则进行加载
2.empty
getPhysRelation
本地化配置
3.PhysSchemaBuilder.collectRelations
RolapSchema.PhysRelation relation
遍历unresolvedColumn
为空不进行遍历
new RolapSchema
这里我们l关闭了立方体父子层级结构所以返回值会为null,无法通过层级的关系去注册
addColumn(starMeasure);
createMeasure
Create parameters
RolapMeasureGroup
createProperties
1.创建物理表physTable
nameExpr captionExpr orderByList levelType、caption
暂时无作用
createColumnList
3.hierarchy.initHierarchy
创建和校验物理模型,同时生成表关系,以及校验table我们所写的计算字段
3.遍历MeasureGroups标签
0 条评论
下一页