AMO olap Test C# generate tsql and mdx
2013-11-30 19:32
225 查看
通过AMO访问online的cube,生成等值的TSql和mdx
自动生成等值的TSQL和MDX进行Cube测试.其中难度比较大的部分是拼接TSQL.
暂时不处理calculations,只除理metrics和Regular Type的dimension Usage.
metric的聚合方法只处理(max,min,sum,count,distinct count)
以下是问题的记录与处理情况.
1.adventureworks示例cube中,会把Date dimension的attributes的表名取成dimtime. 未解决 已经解决此问题
2.如果dimension 表中的attributes引用了其他表的字段,则暂时没有解决这个问题. 解决
使用TableJoin和TableLinks方法来解决这个问题.
Tablelinks方法获取dimensionattributes中使用到的字段所在的表与主表的关系链.
Tablejoin:生成连接的语句.
或许不完善.
3.新问题 如果hierarchy的level的source attribute用的是calculation,那么现在仍然会报错,我应该判断
这个字段是不是计算成员,如果是计算成员,则要去取计算成员的定义.
http://technet.microsoft.com/en-us/library/ms345093.aspx
4.没有考虑dimension attribute的orderby 属性与name column. 未解决(尽快解决 已经解决此问题)
5.问题 自连接的情况 如果dimension usage 当中事实表和维度表是一个表的话,需要给表加别名.
现在只考虑事实表与维度表相同的情况,其他的暂时不考虑.
6.在某些情况下,sum出来的结果会发生溢出,所以需要提前把它转化为bigint.
可以在判断其列的类型为int时自动将其转化成bigint. 未解决
7.遇到父子dimension会形成死循环,或者类似存在回链关系的DSV维度,忽略掉. 解决:第二次出现的时候直接断开.
以下是生成等值TSQL与MDX的运行情况,使用Adventurework示例数据仓库SSAS进行测试,除了提到的第一个问题外,
生成的TSQL均可以运行.
View Code
自动生成等值的TSQL和MDX进行Cube测试.其中难度比较大的部分是拼接TSQL.
暂时不处理calculations,只除理metrics和Regular Type的dimension Usage.
metric的聚合方法只处理(max,min,sum,count,distinct count)
以下是问题的记录与处理情况.
1.adventureworks示例cube中,会把Date dimension的attributes的表名取成dimtime. 未解决 已经解决此问题
2.如果dimension 表中的attributes引用了其他表的字段,则暂时没有解决这个问题. 解决
使用TableJoin和TableLinks方法来解决这个问题.
Tablelinks方法获取dimensionattributes中使用到的字段所在的表与主表的关系链.
Tablejoin:生成连接的语句.
或许不完善.
3.新问题 如果hierarchy的level的source attribute用的是calculation,那么现在仍然会报错,我应该判断
这个字段是不是计算成员,如果是计算成员,则要去取计算成员的定义.
http://technet.microsoft.com/en-us/library/ms345093.aspx
4.没有考虑dimension attribute的orderby 属性与name column. 未解决(尽快解决 已经解决此问题)
5.问题 自连接的情况 如果dimension usage 当中事实表和维度表是一个表的话,需要给表加别名.
现在只考虑事实表与维度表相同的情况,其他的暂时不考虑.
6.在某些情况下,sum出来的结果会发生溢出,所以需要提前把它转化为bigint.
可以在判断其列的类型为int时自动将其转化成bigint. 未解决
7.遇到父子dimension会形成死循环,或者类似存在回链关系的DSV维度,忽略掉. 解决:第二次出现的时候直接断开.
以下是生成等值TSQL与MDX的运行情况,使用Adventurework示例数据仓库SSAS进行测试,除了提到的第一个问题外,
生成的TSQL均可以运行.
public string GetSourceQueryDefinition(Dimension dim,string keycolsrc) { //获取dim的dsv 获取 string rst=keycolsrc; DataSet ds = dim.DataSourceView.Schema; string tbname = keycolsrc.Replace("dbo.",""); if(ds.Tables.Contains(tbname)) { if(ds.Tables[tbname].ExtendedProperties.Contains("QueryDefinition")) rst = "("+ds.Tables[tbname].ExtendedProperties["QueryDefinition"].ToString() + ") as "+ tbname; } return rst; } public string GetColumnDefinition(DataSet ds, string columndatasource) { string columnDefinition = ""; string tableName = columndatasource.Split('.')[0]; string columnName = columndatasource.Split('.')[1]; if (ds.Tables.Contains(tableName) && ds.Tables[tableName].Columns.Contains(columnName) && ds.Tables[tableName].Columns[columnName].ExtendedProperties.Contains("ComputedColumnExpression") ) { columnDefinition = "(" + ds.Tables[tableName].Columns[columnName].ExtendedProperties["ComputedColumnExpression"].ToString() +")"; } else { columnDefinition = columndatasource.ReplaceFirstUnderLineWithDot().AppendComma(); } return columnDefinition; }
View Code
相关文章推荐
- Test-Driven C# Improve the Design and Flexibility of Your Project with Extreme Programming Techniques
- C# - test and cast with reference type or value...
- (15 Mins)A Simple C# And SQL Test
- A Simple C# And SQL Test
- How do I generate compatible train and test sets that get processed with a filter?
- Generate unique strings and numbers in C#(生成一个唯一的字符串和数值)
- [c#] ASP.NET Refactor and Unit Test
- C# read xml from a string and performance test
- Test-Driven C# Improve the Design and Flexibility of Your Project with Extreme Programming Techniques
- (转)Generate Email Notifications With MSBuild and Web Deployment Projects
- Get Started With Continuous Integration For Your .NET (C#) Projects - Test Your Project
- Effective C# Item 15: Utilize using and try/finally for Resource Cleanup
- Build a Desktop GIS Application Using MapWinGIS and C#
- String.Format in Java and C#
- Java and C#基于AES对xml通讯协议加密
- Asp.Net Core Authentication Middleware And Generate Token
- Java and C# Comparison
- Database Testing – Properties of a Good Test Data and Test Data Preparation Techniques
- 幻灯片:Why Java Sucks and C# Rocks
- DEMO[C#]refKeyword and outKeyword 关于ref与out关键字区别的DEMO