FusionChart对MDX查询结果的数据展示案例

前不久在发布了“2011高校信息化实践者精英论坛之上海交大BI系统汇报”之后,相继有几位朋友问到关于数据展示方面的问题,足见数据可视化在BI项目中的重要性。其中有一位叫Emmy朋友问到关于FusionChart如何对MDX查询后的结果数据进行展示,并在博客中问到这个问题。今晚刚好有点时间,于是将Emmy的问题以实际例子的在此解答,希望给予大家参考。

谈及FusionChart,大家可以访问 http://www.fusioncharts.com/ 查看其产品及介绍,其效果的确很cool。而如果要将其应用到我们的BI项目中,需要考虑的问题还是很多的。首先,我们知道,因为FusionChart是基于flash来展示数据的,它的数据源只能是一定格式的xml文件,而且可能每一种图表所需要的xml文件格式不一样。可喜的是,我们可以将数据集转化为xml以提供其数据源。可是,我们知道,在ADOMD.NET中,用MDX语句查询后能获取的对象只能是CellSet,并不是DataSet或DataTable。因此,问题的关键就在于如何将CellSet对象转化为DataTable对象。

其实,只要google一下就知道,早已经有很多先辈们很好地解决了上述问题,并将CellSet对象转化为DataTable对象的方法公布于众,具体代码如下:

  1. ///   
  2. /// 将CellSet转化成Table 
  3. /// 
  4.  
  5. ///  name="cellset">CellSet  
  6. /// <returns> returns>  
  7. private DataTable CellSetToTable(CellSet cellset)  
  8. {  
  9.     DataTable table = new DataTable("cellset");  
  10.  
  11.     Axis columns = cellset.Axes[0]; //获取列轴  
  12.     Axis rows = cellset.Axes[1];//获取行轴  
  13.     CellCollection valuesCell = cellset.Cells;//获取度量值单元集合  
  14.     //行轴的级别标题为表的第一列  
  15.     table.Columns.Add(rows.Set.Hierarchies[0].Caption);  
  16.     //行轴的各个成员的标题变成表的列  
  17.     for (int i = 0; i < columns.Set.Tuples.Count; i++)  
  18.     {  
  19. table.Columns.Add(new DataColumn(columns.Set.Tuples[i].Members[0].Caption));  
  20.     }  
  21.     int valueIndex = 0;  
  22.     DataRow row = null;  
  23.     //向表中填充数据  
  24.     for (int i = 0; i < rows.Set.Tuples.Count; i++)  
  25.     {  
  26. row = table.NewRow();  
  27. //表所有行的第一列值为相应行轴的成标题  
  28. row[0] = rows.Set.Tuples[i].Members[0].Caption;  
  29. for (int k = 1; k <= columns.Set.Tuples.Count; k++)  
  30. {//按顺序把度量值单元集合的值填充到表中  
  31.     row[k] = valuesCell[valueIndex].Value;  
  32.     valueIndex++;  
  33. }  
  34. table.Rows.Add(row);  
  35.     }  
  36.     return table;  
  37. }      

代码很简单,原理就是遍历Cellset中的元组,然后填充至DataTable中。

实现上述难点之后,我们就可以将DataTable的数据转化成xml提供给FunsionChart来展示数据。下面,我们一步步来解答Emmy的问题:

1)首先,将附件question.rar解压,并将test6.abf文件还原至SSAS中,并测试一下MDX语句是否正确,如下图所示:

2)接着,我们新建一个ASP.NET项目,并将相关flash文件、js文件加入到解决方案中,并将CellSet转DataTable的方法写入到一个工具类中,并添加对ADOMD.NET的引用,如下图所示:

 

 

3)在Default.aspx页面中加入以下控件,我们希望能通过选择不同的flash图表来展示数据:

 

4)在页面后置代码中,编写相应的事件代码,代码很简单,但是这里要说明的是,FusionChart可以采用两种在网页中呈现数据,一种是生成一段JS代码,一种是直接生成一段Flash的HTML代码。点击预览DataTable后的结果如下所示(是不是和我们刚开始的MDX测试结果一致?):

 

当选择不同的图表类型后,生成的图表样式也不一样(XML的参数很多,可以参考FunsionChart官方的API说明):

饼状图

 

柱状图

 最后,完整的案例程序在此下载。希望大家多多交流!http://files.cnblogs.com/bobomouse/datamining/Emmy.rar

原文链接:http://www.cnblogs.com/bobomouse/archive/2011/04/01/2001686.html

【编辑推荐】

  1. 走进MongoDB的世界 展开MongoDB的学习之旅
  2. 微软进军NoSQL 发布Trinity数据库
  3. 视觉中国的NoSQL之路:从MySQL到MongoDB
  4. 初窥NoSQL世界 开源CouchDB新手入门
  5. MongoDB与CouchDB全方位对比

 

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/231180.html<

(0)
运维的头像运维
上一篇2025-04-19 14:08
下一篇 2025-04-19 14:09

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注