MDX学习心得总结

MDX 学习心得

    1、在MDX中要完全的摆脱SQL中的查询观念,在MDX任何一个查询都是所有的Demension(维度)共同作用的结果。没有在MDX语句中出现的DEMEMSION是背景维度,Analysis Service将会对其取默认值,出现在select后面的称为轴维度,在Analysis Services中,最多取128维,出现在WHERE后面的是切片维度。

    2、注意区分在数据立方中单元,元组和集合之间的关系。

    3、MDX语句的查询过程。在MDX语句中,第一部工作是先生成轴维度的成员,再根据轴维度成员的关系读取数据。特别要注意的是在crossjoin的时候涉及到轴维度成员的塞选和排序的时候,其结果的正确性,有依赖关系的两个维度不能放在同一个轴上。

    4。注意使用计算成员(member),命名集(set),成员属性(DEMINSION PROPERTIES).

 

ADO MD 学习心得

     1、ADO MD中间对象与数据立方(Cubs)的对应关系。

                 

Axis 表示单元集的位置轴或过滤轴,包含所选的一维或多维成员。
Catalog 包含特定多维数据提供者 (MDP) 的多维模式信息(即立方和基本维、分级结构、级别和成员)。
Cell 代表位于轴坐标交叉点上的数据,包含在单元集中。
Cellset 表示多维查询的结果。它是从立方或其它单元集中选出的单元的集合。
CubeDef 表示多维模式中的一个立方,包含有关维的集合。
Dimension 表示多维立方的一个维,包含成员的一个或多个分级结构。
Hierarchy 表示一种方式,按此方式维的成员可以被合计或“卷起”。维可以按照一个或多个分级结构进行合计。
Level 包含一个成员集,其中每个成员在分级结构内均有相同的等级。
Member 代表立方中级别的成员、级别成员的子或位于单元集的轴上某位置的成员。
Position 代表定义轴上点的不同维的一个或多个成员的集合。

               ×注意POSITION的理解。position是从数据出发,一个数据格对应的上面有多少个成员就是Position.Members.

         2、C#中读取CellSet的例子

          for(int i = 0;i <cls.Axes[0].Positions.Count;i++)
    {
     Response.Write("<TH>"+cls.Axes[0].Positions[i].Members[0].Caption+"</TH>");
    }
    Response.Write("</TR>");

    object[] coords= new object[2];
    for(int i = 0; i < cls.Axes[1].Positions.Count;i++)
    {
     Response.Write("<TR>");  //Start table row
     Response.Write("<TD bgcolor = 'LightBlue'><b>" + cls.Axes[1].Positions[i].Members[0].Caption+ "</b></TD>");
     for ( int j = 0;j < cls.Axes[0].Positions.Count; j++) //In each row, for each column
     {    
 
      coords[0] = j; 
      coords[1] = i; 

      ADOMD.Cell newcell;
      newcell = cls.get_Item(ref coords);
      object dispvalue;
      dispvalue = newcell.FormattedValue;
    
      if ( newcell.FormattedValue != null)       
      {
       Response.Write("<TD>" + dispvalue + "</TD>");
      }
      else
      {
       Response.Write("<TD> 0 </TD>");
      }
 
     
     }

 

你可能感兴趣的:(object,properties,service,table,each,hierarchy)