商业智能

BI模式(SCHEMA)介绍-访问权限配置

目录

  1. Table配置
  2. Dimension配置
  3. Measure配置
  4. VirtualCube配置
  5. 访问权限配置

5、访问权限配置

1、该部分属于访问控制配置文件
2、Role定义了一个访问者
3、SchemaGrant是一个访问Schema的权利的集合
4、CubeGrant是一个访问Cube的权利的集合
5、HierarchyGrant是一个访问该层次以及属于该层次的级别的权利的集合
6、MemberGrant是一个访问成员以及该成员的孩子的权利的集合
在理解上述元素的情况下,我们来了解在本sample中该部分的作用:首先定义了一个访问用户,是California manager(加州经理),他不能访问整个Schema中的Cube,但他可以访问Sales这个Cube。其次,自定义了对该Sales Cube中的Store这个层次的访问控制,他可以访问位于美国加州的store(除了洛杉矶)。最后定义了他对该Sales Cube中的Gender层次无访问权限。
7、第五部分的完整框架是:

BI模式(SCHEMA)介绍-VirtualCube配置

目录

  1. Table配置
  2. Dimension配置
  3. Measure配置
  4. VirtualCube配置
  5. 访问权限配置

4、VirtualCube配置

1、VirtualCube,A cube defined by combining the dimensions and measures of one or more cubes. A measure originating from another cube can be a <CalculatedMember>.即若干个Cube中的dimension和measure相结合形成一个Cube,该Cube就叫做VirtualCube。来自另一个Cube的measure可以是该VirtualCube的计算成员。

2、在本sample中定义了一个叫Warehouse and Sales的多维虚拟分析主题,VirtualCubeDimension定义了一个来自Sales的Cube,并且选择了该Cube中的Customers维。注意在VirtualCubeDimension的定义中还有另一种方法,如<VirtualCubeDimension name=”Product”/>,这是针对共享维的使用方法。
3、VirtualCubeMeasure定义了一个来自Sales的Cube,并且选择了该Cube中的Sales Count度量。
4、CalculatedMember定义了一个计算成员,使用方法和一般的Cube一样。
5、第四部分一个完整的框架是:

或者如本sample中的写法,即把在VirtualCube中要使用到的Cube写在<VirtualCubeDimension>,<VirtualCubeMeasure>和<CalculatedMember>中,从而不需要在<CubeUsages>中定义。

BI模式(SCHEMA)介绍-Measure配置

目录

  1. Table配置
  2. Dimension配置
  3. Measure配置
  4. VirtualCube配置
  5. 访问权限配置

3、Measure配置

1、第一个Measure的名字是Unit Sales,对应事实表中的unit_sales列,聚合的方法是求和(还可以是:sum,count,min,max,avg,distinct-count),求和之后的结果格式为标准格式。

2、第二个Measure的名字是Promotion Sales,在该Measure下加入了一个MeasureExpression。期望是:从事实表sales_fact_1997中挑选出promotion_id=0的所有行,然后对该事实表的store_sales进行求和(如果某行的sales_fact_1997.store_sales=0,则不对该行进行计算)
3、CalculatedMember元素是一个计算成员,在本sample中取名Profit,属于Measures维。期望是:商店的销售额减去商店的成本得到利润值,得到的值的类型是字符串类型,值的格式是$#,##0.00
4、第三部分一个完整的框架是:

BI模式(Schema)介绍-Dimension配置

目录

  1. Table配置
  2. Dimension配置
  3. Measure配置
  4. VirtualCube配置
  5. 访问权限配置

2、Dimension配置

1、DimensionUsage元素:如果在之前定义了共享维(shared dimensions),并且在该Cube中想要使用该共享维,那么就如<DimensionUsage name=”Store” source=”Store” foreignKey=”store_id”/>使用,通过store_id把事实表sales_fact_1997和基础表Store相连接。
2、
定义了一个名为Promotion Media的维,通过promotion_id连接基础表promotion和事实表sales_fact_1997。<Level name=”Media Type” column=”media_type” uniqueMembers=”true”/>定义了一个层次中的级别,选择了基础表promotion的media_type字段,不包括该表中的其他字段。
3、在本上面的例子中又定义了一个名为Customers的demension,通过字段customer_id连接基础表customer和事实表sales_fact_1997。接下来来解释下其他元素的作用:
4、第二部分的完整框架是:

BI模式(Schema)介绍-Table配置

在这里系统的看看构成模式文件的元素:
首先说明一点:这个sample中每一部分在形式上有很多重复的地方,为了尽可能地讲的完全,所以在讲解的过程中,每一部分提取形式上不重复的部分,然后加入该部分的一些可选项,同时可以查阅FoodMart.xml这个Schema文件。从宏观上来看,配置一个Schema大致可以分成五部分,分别是:

  1. Table配置
  2. Dimension配置
  3. Measure配置
  4. VirtualCube配置
  5. 访问权限配置

下面分析每一部分中的元素构成。

1、Table配置

  1. 首先给出表名,在一般情况下,一个Cube是建立在一张事实表之上的,所以Table name=某事实表,但也可以在一张基础表上建立Cube;
  2. 在本sample中加入了一个聚合表(aggregate table),在一个Cube中可以加,也可以不加,需要根据实际情况来决定。聚合表的作用简单的说表现在考虑报表设计时,通过聚合预先计算好数据汇总,从而改进查询响应的时间。聚合表的内容非常丰富,在这里只讲解最基本的概念,进一步了解请访问官网http://mondrian.pentaho.com/documentation/aggregate_tables.php,接下来简单的理解构成聚合表的元素;
  3. AggExclude name,这里给出的表名旨在告诉Mondrian该表不是相应事实表的聚合表;
  4. AggName name,这里给出的表名告诉Mondrian该表是相应事实表的聚合表;
  5. AggFactCount column=”FACT_COUNT”,这个字段在每一张聚合表中都存在,记录了相应的事实表中有多少列写入到聚合表中;
  6. AggIgnoreColumn column,该列名的作用是告知Mondrian该列是已知的,应该被忽略;
  7. <AggForeignKey factColumn=”product_id” aggColumn=”PRODUCT_ID”/>这里给出了一个映射关系,即事实表中的product_id列对应了聚合表中的PRODUCT_ID列;
  8. AggMeasure name和AggLevel name这两个元素同样也给出了一个映射关系,即把在Cube的模式文件中定义的逻辑名映射到聚合表中的列名;
  9. AggPattern pattern使用了正则表达式,把符合该pattern的聚合表包括进来。如在本sample中把前缀为agg_sales_fact_1997_的聚合表全部包括进来作为孩子元素;
  10. AggPattern pattern中的AggExclude name元素,该元素很明确地指出在已包括进来的聚合表中,剔除某特定的聚合表;
  11. AggPattern pattern中的AggExclude pattern元素,该元素的作用表现在把符合AggExclude pattern的正则表达式的聚合表剔除;
  12. 第一部分的完整框架是:
 

Mondrian+Jpivot在MyEclipse中源码配置的详细步骤

之前在《关于实施一个mondrian+Jpivot的DEMO的方案》中给出了配置Mondrian+Jpivot源码配置的大概步骤,现在兑现之前的承诺,给出在MyEclipse中源码配置的详细步骤:

  1. 首先在官网上下载最新版的Jpivot-1.8.0.zip压缩包,解压到相应的目录。
  2. 在解压的目录中找到一个jpivot.war文件放到/webapp目录下,启动tomcat进行解压,得到一个jpivot的文件夹。
  3. 新建一个web工程,取名jDemo,在第一步中解压出来的文件中根据..\jpivot-1.8.0\src\java这个路径,把该文件夹下的所有文件全部拷贝到新建的web工程的src目录下。
  4. 根据第二步,循着路径/webapp/jpivot,把该文件夹下的所有文件全部拷贝到新建web工程的WebRoot目录下,在拷贝时选择全部 拷贝。
  5. 在完成上述这些工作后,可能会有一个文件报错,因为该文件中有乱码出现,这要根据自己的编码方式了。我在实际的使用过程中,为了能够显示中文,是用了gb2312的编码,这因人而异。同时到目前为止这个文件的作用不知道在哪里,我把这个文件删除之后,程序还是运行正常的。
  6. 现在基本上已经完成源码在Myeclipse中的配置了,很多也许会问不是说Mondrian+Jpivot的源码配置吗,其实我们把jpivot-1.8.0.zip这个包下载下来之后,在配置的过程中,同时也配置Mondrian,可以在配好之后,阅读源码,你会发现这点的。
  7. 好了,本来想上图,看看效果,但是一直上不上来。