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 条评论
 下一页
  
   
   
   
  
  
  
  
  
  
  
 