热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

ADOMD。NET查询AnalysisServies中多维数据集

本文内容1.ADOMD。NET查询AnalysisServies中多维数据集2.把查询返回来的单元集合转化为DataTable查询内容:2004年
本文内容
1.        ADOMD NET 查询Analysis Servies中多维数据集

2.       把查询返回来的单元集合转化为DataTable

查询内容:

 2004年四个季度的分销商配额与销售额,所对应的MDX

select {[Measures].[Reseller Sales-Sales Amount] ,[Measures].[Sales Amount Quota] } on columns, {[Date].[Fiscal Quarter].Members} on rows

 from [Analysis Services Tutorial]

 where [Date].[Fiscal Year].&[2004]"

数据集:联机帮助文档自带教程完成第七课后,布署后的多维数据集Analysis Services Tutorial

查询轴:

    列轴:分销商配额与销售额对应的度量值[Measures].[Reseller Sales-Sales Amount] ,[Measures].[Sales Amount Quota]

    行轴:时间维度的季度所有成员[Fiscal Quarter].Members

切片轴:时间维度中年份级别中的2004年面员

数据结构的转化

 ADOMD.NET查询返回的单元格集合CellSet的信息其中包插查询轴(列轴与行轴)和度量值集合(如图一),但客户端应用程序显示数据需要表的数据结构,列与行组成.数据结构的转化细节请看代码中的注释.

             
(图一)

(2)

代码:


using  System;
using  System.Collections;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;
using  Microsoft.AnalysisServices.AdomdClient;
namespace  winAl
{
    
public partial class Form1 : Form
    
{
        
public Form1()
        
{
            
            InitializeComponent();
        }

        
public void Adomd()
        
{
            
//连接的字符串
            string conStr = "provider=msolap ;Integrated Security =SSPI ;Data Source= localhost ;Catalog =Analysis Services Tutorial ;";
            
//创建个连接对象
            AdomdConnection con = new AdomdConnection();            
            con.ConnectionString 
= conStr;
            con.Open();  
            
// 创建个命令
            AdomdCommand cmm =con.CreateCommand();
            
            cmm.CommandText 
= @" select {[Measures].[Reseller Sales-Sales Amount] ,[Measures].[Sales Amount Quota] } on columns,
            {[Date].[Fiscal Quarter].Members} on rows 
            from [Analysis Services Tutorial]
 
            where [Date].[Fiscal Year].&[2004]
";
            
//执行命令返回单元集合
            CellSet result = cmm.ExecuteCellSet();
            
this.dataGridView1.DataSource = CellSetToTable(result);
            con.Close();
            
        }


        
private DataTable CellSetToTable(CellSet cellset)
        
{
            
            DataTable table 
= new DataTable("cellset");   

          
            Axis columns
=cellset.Axes[0] ;//获取列轴
            Axis rows=cellset.Axes[1] ; //获取行轴
            CellCollection valuesCell = cellset.Cells;//获取度量值单元集合
            
//行轴的级别标题为表的第一列
            table.Columns.Add(rows.Set.Hierarchies[0].Caption);
            
//行轴的成各个成员的标题变成表的列
            for(int i=0 ;i<columns.Set.Tuples.Count ;i++)
            
{
             table.Columns.Add(
new DataColumn(columns.Set.Tuples[i].Members[0].Caption)) ;
            }

            
int valuesIndex=0;
            DataRow row 
= null;
            
//向表中填充数据
            for (int i = 0; i < rows.Set.Tuples.Count;i++ )
            
{
                row 
= table.NewRow();
                
//表所有行的第一列值为相应行轴的成标题
                row[0= rows.Set.Tuples[i].Members[0].Caption;
                
for (int k = 1; k <= columns.Set.Tuples.Count;k++ )
                
{   //按顺序把度量值单元集合的值填充到表中
                    row[k] = valuesCell[valuesIndex].Value;
                    valuesIndex
++;
                }

                table.Rows.Add(row);
            }


            
return table;
            
        
        }
     

        
private void button1_Click(object sender, EventArgs e)
        
{
            Adomd();
        }

    }

}

推荐阅读
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了在Vue项目中如何结合Element UI解决连续上传多张图片及图片编辑的问题。作者强调了在编码前要明确需求和所需要的结果,并详细描述了自己的代码实现过程。 ... [详细]
  • 如何提高PHP编程技能及推荐高级教程
    本文介绍了如何提高PHP编程技能的方法,推荐了一些高级教程。学习任何一种编程语言都需要长期的坚持和不懈的努力,本文提醒读者要有足够的耐心和时间投入。通过实践操作学习,可以更好地理解和掌握PHP语言的特异性,特别是单引号和双引号的用法。同时,本文也指出了只走马观花看整体而不深入学习的学习方式无法真正掌握这门语言,建议读者要从整体来考虑局部,培养大局观。最后,本文提醒读者完成一个像模像样的网站需要付出更多的努力和实践。 ... [详细]
  • 本文介绍了停用Vaadin焦点颜色的全局方法。焦点环是一种辅助功能,用于指示字段已从键盘交互获得焦点。每个组件和主题的焦点环样式不同。文章提供了一种方便的方法来找到和修改焦点环样式,通过检查shadow DOM中的标签并覆盖相应的样式。同时,还介绍了使用with或导入样式表的方法来应用修改后的样式。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • 本文介绍了2015年九月八日的js学习总结及相关知识点,包括参考书《javaScript Dom编程的艺术》、js简史、Dom、DHTML、解释型程序设计和编译型程序设计等内容。同时还提到了最佳实践是将标签放到HTML文档的最后,并且对语句和注释的使用进行了说明。 ... [详细]
  • jQuery如何判断一个元素是否被点击?
    本文介绍了使用jQuery判断一个元素是否被点击的方法,并通过示例进行了具体说明。注意要指定父级,否则会执行多次。 ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 本文讨论了将HashRouter改为Router后,页面全部变为空白页且没有报错的问题。作者提到了在实际部署中需要在服务端进行配置以避免刷新404的问题,并分享了route/index.js中hash模式的配置。文章还提到了在vueJs项目中遇到过类似的问题。 ... [详细]
  • 本文介绍了Python字典视图对象的示例和用法。通过对示例代码的解释,展示了字典视图对象的基本操作和特点。字典视图对象可以通过迭代或转换为列表来获取字典的键或值。同时,字典视图对象也是动态的,可以反映字典的变化。通过学习字典视图对象的用法,可以更好地理解和处理字典数据。 ... [详细]
author-avatar
方雅俊
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有