热门标签 | 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();
        }

    }

}

推荐阅读
  • 运用DDD分层架构优化微服务代码设计
    在微服务实施过程中,确定合理的代码结构至关重要。本文探讨了如何利用领域驱动设计(DDD)的分层架构来优化微服务的代码模型,确保系统的可维护性和扩展性。 ... [详细]
  • ECharts图表绘制函数集
    本文档提供了使用ECharts库创建柱状图、饼图和双折线图的JavaScript函数。每个函数都详细列出了参数说明,并通过示例展示了如何调用这些函数以生成不同类型的图表。 ... [详细]
  • 本项目使用Java语言开发了一个基于B/S架构的指纹识别系统,该系统能够实现指纹的高效采集与精准识别,适用于多种安全认证场景。 ... [详细]
  • 本文详细介绍了如何使用 Python 编程语言中的 Scapy 库执行 DNS 欺骗攻击,包括必要的软件安装、攻击流程及代码示例。 ... [详细]
  • 工作中频繁在不同Linux服务器之间切换时,频繁输入密码不仅耗时还影响效率。本文介绍如何通过设置SSH密钥认证,简化登录流程,提高工作效率。 ... [详细]
  • 利用Git GUI将本地项目同步至GitHub的方法
    GitHub作为开发者不可或缺的工具,不仅提供了丰富的开源项目资源,还极大地便利了个人项目的管理和版本控制。本文将详细介绍如何使用Git GUI工具将本地开发的项目上传至GitHub。 ... [详细]
  • 华为云openEuler环境下的Web应用部署实践
    本文详细记录了在华为云openEuler系统上进行Web应用部署的具体步骤,包括配置yum源、安装Apache、MariaDB、PHP及其相关组件,并完成WordPress的安装与配置过程。 ... [详细]
  • 本文深入探讨了领域驱动设计(DDD)中的聚合概念及其在事件溯源架构中的应用。聚合是一组紧密相关的类,这些类作为一个整体运作,形成一个有明确边界的组织。只有通过聚合根才能与聚合内的对象进行交互。 ... [详细]
  • 本文探讨了React组件与普通HTML元素间间距不一致的问题,并提供了通过修改代码和使用CSS来解决这一问题的方法。 ... [详细]
  • 本文探讨了如何在Sitecore 9环境中通过Postman使用API密钥发送请求,包括解决常见错误的方法。 ... [详细]
  • 本文介绍如何通过Java代码调用阿里云短信服务API来实现短信验证码的发送功能,包括必要的依赖添加和关键代码示例。 ... [详细]
  • 解决Expo XDE 2.22.1版本启动错误
    根据问题描述,用户在将Expo升级至2.22.1版本后,在尝试打开项目时遇到了错误。本文提供了详细的错误分析及解决方案。 ... [详细]
  • 本文探讨了互联网服务提供商(ISP)如何可能篡改或插入用户请求的数据流,并提供了有效的技术手段来防止此类劫持行为,确保网络环境的安全与纯净。 ... [详细]
  • 本文详细介绍了如何使用C#实现不同类型的系统服务账户(如Windows服务、计划任务和IIS应用池)的密码重置方法。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
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社区 版权所有