买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】一种基于动态交叉表的多维数据实时分析方法_浪潮通用软件有限公司_201810456880.1 

申请/专利权人:浪潮通用软件有限公司

申请日:2018-05-14

公开(公告)日:2021-06-08

公开(公告)号:CN108647340B

主分类号:G06F16/2458(20190101)

分类号:G06F16/2458(20190101);G06F16/27(20190101);G06F16/28(20190101)

优先权:

专利状态码:有效-授权

法律状态:2021.06.08#授权;2018.11.06#实质审查的生效;2018.10.12#公开

摘要:本发明公开了一种基于动态交叉表的多维数据实时分析方法,属于数据分析技术领域,在前端采用分析向导的形式,自主选择指标和维度;在后台采用SSAS方式,动态地创建CUBE;该方法实现步骤如下:S1:数据整理,包括体系事实表和维度表;S2:通过指标工具将指标、维度和量度包含到指标体系内;S3:通过语义对象设计器对所有维度加以描述,将维度进行分组和分级;S4:通过分析向导自助完成体系与指标、维度和量度的包含关系;S5:选择所要分析的指标和维度,形成实时分析表。本发明大大提高数据处理和分析的性能,弥补关系型交叉表多维分析性能上的不足,使分析更加灵活高效,满足不同的业务场景。

主权项:1.一种基于动态交叉表的多维数据实时分析方法,其特征在于在前端采用分析向导的形式,自主选择指标和维度;在后台采用SSAS方式,动态地创建CUBE;该方法实现步骤如下:S1:数据整理,包括体系事实表和维度表,体系事实表包含所要分析的指标字段、量度字段和维度编号字段内容,维度表包含各种纬度字段内容,体系事实表通过维度编号字段与各个维度表相关联;S2:通过指标工具将指标、维度和量度包含到指标体系内;S3:通过语义对象设计器对所有维度加以描述,将维度进行分组和分级;S4:通过分析向导自助完成体系与指标、维度、量度的包含关系;S5:选择所要分析的指标和维度,形成实时分析表。

全文数据:一种基于动态交叉表的多维数据实时分析方法技术领域[0001]本发明涉及数据分析技术领域,具体地说是一种基于动态交叉表的多维数据实时分析方法。背景技术[0002]随着时代的发展,大数据的逐步广泛应用,企业数据量的增加,传统关系型的BIBusinessIntelligence,商业智能)分析弊端开始显现。现有的关系型分析模型比较固化,是面向单个主题的,而主题确定了分析指标、维度的范围,关系型数据分析是基于SELECT语句查询后的临时表,在大数据量时,存在诸多性能问题,进而造成用户体验不佳,因而不能满足业务需求。[0003]发明内容本发明的技术任务是针对以上不足之处,提供一种基于动态交叉表的多维数据实时分析方法,通过动态交叉表的创建和分析,大大提高数据处理和分析的性能,弥补关系型交叉表多维分析性能上的不足。[0004]本发明解决其技术问题所采用的技术方案是:一种基于动态交叉表的多维数据实时分析方法,在前端采用分析向导的形式,自主选择指标和维度;在后台采用SSAS方式,动态地创建CUBE,动态交叉表的运算过程最大程度的放在服务器端运行,在服务端直接动态执行SSAS,减轻客户端的压力;该方法实现步骤如下:S1:数据整理,包括体系事实表和维度表,体系事实表包含所要分析的指标字段、量度字段和维度编号字段内容,通过维度编号字段与各个维度表相关联,维度表包含各种纬度字段内容,记录各个维度信息;(如员工维度表,有工号、姓名、性别、生日、联系电话、学历、所在部门等等维度)S2:通过指标工具将指标、维度和量度包含到指标体系内;S3:通过语义对象设计器对所有维度加以描述,将维度进行分组和分级;S4:通过分析向导自助完成体系与指标、维度和量度的包含关系;S5:选择所要分析的指标和维度,形成实时分析表。[0005]优选的,所述指标工具完成指标体系定义、指标定义、维度定义和量度定义,再通过指标体系的包含关系,依次将指标、纬度和量度包含其中。[0006]进一步的,指标体系为事实表,其体系编号与对应的数据库中的表名保持一致,指标编号和量度编号对应表中字段名,且保持一致。[0007]进一步的,指标体系中存储炜度编号外键,用于与维度表作关联。[0008]优选的,借助语义对象设计器,把维度表中的字段重新描述,在当今大数据中分析维度已变得十分庞大,语义对象设计器按维度属性划分,将维度分为基本维度、统计依据和其他维度属性。[0009]优选的,通过分析向导,用户自主选择所要分析的指标,由已选指标关联出所用的维度,进而对已选指标和维度进行条件筛选。使交叉表分析业务变得更精准、更简洁,如“区域等于山东并且贷款金额大于等于1000000”的公司运营状况分析,其中,区域是维度,贷款金额是指标。[0010]进一步的,将所选的指标和维度及筛选条件传到后台程序处理,通过程序控制SSAS操作,从所用的事实表和维度表提取出符合条件的数据,并“告诉”SSAS哪些字段是指标、哪些字段是维度,从而动态创建出⑶BE多维分析。动态交叉表的运算过程通过程序创建的SSAS层完成,SSAS是当前非常成熟、高效的多维交叉表分析模式,由微软开发并持续维护。[0011]进一步的,指标和量度作sum预处理,⑶BE数据反馈到前端,由用户拖拽到行或列,形成动态的实时交叉表。[0012]优选的,生成的CUBE支持的数据分析模型包括多个指标+多个一般维度+多个退化维度、多个指标+多个退化维度、多个指标+多个复杂维度对应一个语义对象的维度)、空指标+多个一般维度+多个退化维度和空指标+多个退化维度。[0013]交叉表是报表中常见的类型,属于基本的分析报表,将所有的分析字段按照数据类型分为指标、维度和量度,指标字段和量度字段为数值型,维度字段为字符型。具体应用到交叉表时,维度在行或列中体现,指标和量度在值区域中体现,参与具体的聚合计算。通常聚合计算函数有求和、计数、平均值、方差、标准差等。[0014]一个多维指标体系对应一个主题,多维指标体系下包含指标、维度、量度等要素,对应事实表维度模型中的指标、维度、指标量度等信息。指标、维度、量度可独立于多维指标体系定义,与多维指标是多对多关系。一个多维指标体系对应一个指标分类,采用多维指标体系描述指标维度对应关系;多维指标体系提供生成事实表功能,即一个多维指标体系对应一个事实表,减少数据量和ETL处理的复杂性。[0015]本发明的一种基于动态交叉表的多维数据实时分析方法和现有技术相比,具有以下有益效果:动态交叉表的运算过程最大限度地放在服务器端运行,在服务端直接动态执行SSAS,减轻了客户端的压力,比传统的纯前端动态交叉表响应更迅速,性能更卓越,从而达到实时分析的目的;引入了自助分析向导功能,使指标及维度的选择完全由用户自主完成,使分析更加灵活高效,满足不同的业务场景。[0016]该动态交叉表的多维分析方法处理性能高,在处理过程中将处理分析计算过程最大程度地放在服务器端,采用更成熟高效的算法,大大提高了性能问题,拓宽了维分析的应用领域;0LAP系统能处理与应用有关的任何逻辑分析和统计分析,用户无需编程就可以定义新的专门计算,将其作为分析的一部分,并以用户理想的方式给出报告;系统提供对数据分析的维视图和分析,包括对层次维和多重层次维。颗粒度更加明确,展现级次也更为清晰。附图说明[0017]图1是本发明实施例中分析流程图。具体实施方式[0018]一种基于动态交叉表的多维数据实时分析方法,在前端采用分析向导的形式,自主选择指标和维度;在后台采用SSAS方式,动态地创建⑶BE,动态交叉表的运算过程最大程度的放在服务器端运行,在服务端直接动态执行SSAS,减轻客户端的压力。[0019]该方法实现步骤如下:S1:数据整理,包括体系事实表和维度表。[0020]一个多维指标体系对应一个主题,多维指标体系下包含指标、维度、量度等要素,对应事实表维度模型中的指标、维度、指标量度等信息。指标、维度、量度可独立于多维指标体系定义,与多维指标是多对多关系。一个多维指标体系对应一个指标分类,采用多维指标体系描述指标维度对应关系;多维指标体系提供生成事实表功能,即一个多维指标体系对应一个事实表,减少数据量和ETL处理的复杂性。[0021]每个体系对应一个事实表,体系事实表包含所要分析的指标字段、量度字段和维度编号字段内容,通过维度编号字段与各个维度表相关联。体系编号与对应的数据库中的表名保持一致,指标编号和量度编号对应表中字段名,且保持一致,指标体系中存储炜度编号外键,用于与维度表作关联。[0022]维度表包含各种纬度字段内容,记录各个维度信息,如员工维度表,有工号、姓名、性别、生日、联系电话、学历、所在部门等等维度。[0023]交叉表是报表中常见的类型,属于基本的分析报表,将所有的分析字段按照数据类型分为指标、维度和量度,指标字段和量度字段为数值型,维度字段为字符型。具体应用到交叉表时,维度在行或列中体现,指标和量度在值区域中体现,参与具体的聚合计算。通常聚合计算函数有求和、计数、平均值、方差、标准差等。[0024]S2:指标工具完成指标体系定义、指标定义、维度定义和量度定义,再通过指标体系的包含关系,依次将指标、炜度和量度包含其中,可以通过指标工具将指标、维度和量度包含到指标体系内。[0025]S3:通过语义对象设计器对所有维度加以描述,将维度进行分组和分级;借助语义对象设计器,把维度表中的字段重新描述,在当今大数据中分析维度已变得十分庞大,语义对象设计器按维度属性划分,将维度分为基本维度、统计依据和其他维度属性。[0026]S4:通过分析向导自助完成体系与指标、维度和量度的包含关系;S5:选择所要分析的指标和维度,形成实时分析表。[0027]_通过分析向导,用户自主选择所要分析的指标,由已选指标关联出所用的维度,将这些指标和维度以参数变量的形式传送到服务器端,在SSAS层明确出各个指标和维度属性,动态创建出交叉表,最终分析基于⑶心方式进行,进而对己选指标和维度进行条件筛选。使交叉表分析业务变得更精准、更简洁,如“区域等于山东并且贷款金额大于等于1000000”的公司运营状况分析,其中,区域是维度,贷款金额是指标。[0028]将所选的指标和维度及筛选条件传到后台程序处理,通过程序控制8^3操作,从戶^用的事实表和维度表提取出符合条件的数据,并“告诉”8^5哪些字段是指标、哪些字段是维度,从而动态创建出⑶BE多维分析。指标和量度作sum预处理,⑶肥数据反馈到前端,由用户拖拽到行或列,形成动态的实时交叉表。[0029]关于数据库连接,则采用XML配置文件的方式,支持SQLSERVER,ORACLE等主流数据库。[0030]交叉表分析的数据流转过程如下:1、语义对象,描述表结构;2、多维指标体系,描述事实表和表数据间的关系;3、分析向导,并按取数条件筛选数据;4、动态生成交叉表Cube。生成的CUBE支持的数据分析模型包括多个指标+多个一般维度+多个退化维度、多个指标+多个退化维度、多个指标+多个复杂维度对应一个语义对象的维度、空指标+多个一般维度+多个退化维度和空指标+多个退化维度。实施例[0031]数据准备工作:指标体系定义、指标定义、量度定义、维度定义、指标体系包含关系、语义对象设计器;数据库连接设置;创建分析向导:指标选择、维度选择、条件设定;SSAS层动态创建CUBE;前端展现实时多维分析。[0032]指标、维度处理的核心代码如下:参数说明zbtx指标体系编号),zb指标编号的字符串),wd维度编号的字符串),r〇otwd带有根节点的维度字符串),wherStr条件设定里的筛选条件字符串)publicstringGetGuideSqlstringzbtx,stringzb,stringwd,stringrootwd,stringwherStr{stringtxtable=zbtx_ToUpper+tableflag;对应的事实表stringIds=ZBTXLDzbtx;量度属性stringwdTables=string.Empty;维度主键别名stringwdpkeyAss=string.Empty;基本维度名称stringmcwdAss=string.Empty;统计依据别名stringtjwdAss=string.Empty;其他维度别名stringqtwdAss=string.Empty;独立维度别名stringdlwdAss=string.Empty;指标别名stringzbAss=string.Empty;量度别名stringzbldAss=string.Empty;维度主键、基本名称、统计依据、退化维度字段stringkeybys=string.Empty;stringmcwdbys=string.Empty;stringtjwdbys=string.Empty;stringdlwdbys=string.Empty;stringdlwdcolums=string.Empty;stringconditions=string.Empty;stringzbcolums=string-Empty;stringzbldcolums=string.Empty;stringwtableName=string.Empty;stringwtablekey=string.Empty;按照维度主键个数循环forintk=0;k0{语义对象对应的维度表描述信息wdtableCnName=wdds.Tables[0].Rows[0][^SIMAJISP^].ToString0;~}stringkey=table—key.Split’-’)[1].ToUpper;wtablekey=key;stringkeydcolums=string.Empty;维度主键列stringmcwdcolums=string.Empty;基本维度列stringtjwdcolums=string.Empty;统计依据维度列stringqtwdcolums=string.Empty;其他维度列stringkeyby=string.Empty;stringmcwdby=string.Empty;stringtjwdby=string.Empty;stringcubecolEng=string.Empty;cube所用英文名称stringcubecolCn=string.Empty;cube所用中文名称stringwdtAs=〃W〃+k+〃.〃;维度表别名标识wdTables+=wdtable+"W〃+k+〃,";维度主键stringkeysql=string.Empty;ifgBBManager.DbType==BIDbType.Oracleoracle数据源时{keysql="selectSOBJ—SHORTaspkey,SOBJ—DISPfromRPSOBJwheresubstringSOBJ—OBJID,10,lenSOBJ—OBJID||’-’||SOBJ—SHORTIN"+rootAndwd+〃)andS0BJ_0BJID=,"+i^psobjid+",andSOBJ—ATTR=’BH’〃:}Elsesqlserver数据源{keysql="selectS0BJ—SH0RTaspkey,SOBJ—DISPfromRPSOBJwheresubstringS0BJ—0BJID,10,lenSOBJ—OBJID+’-’+S0BJ_SH0RTIN"+rootAndwd+"andSOBJ—0BJID=’〃+rpsobjid+〃’andSOBJ—ATTR=’BH,";}DataSetkeyrootwd=gBBManager.ExecuteDataSetkeysql;ifkeyrootwd!=nullkeyrootwd.Tables[0].Rows.Count0{forinti=0;i〇{forinti=0;i〇{forinti=0;i9mzCol.Length1{stringmzTable=mzObj.Substring9,mzObj.Length-9;stringmzstr=〃(select〃+mzCol+〃FROM〃+mzTable+〃wheresystemid=〃+col+〃)as〃+wdtable+〃_〃+col.ToUpper;tjwdShow=mzstr+}tjwdcolums+=tjwdShow;}}else{tjwdcolums=〃〃;}其他维度stringqtsql=string.Empty;ifgBBManager.DbType==BIDbType.Oracle{qtsql="selectSOBJ_SH0RTaswd,SOBJ_DISP,SOBJ_PKOBJ,SOBJ_PK⑶LfromRPSOBJwheresubstringSOBJ_OBJID,10,lenS0BJ_0BJID||,-,|S0BJ_SH0RTIN"+rootAndwd+"andS0BJ_0BJID=’〃+rpsobjid+andS0BJ_IFJSDX=’110’andS0BJ_ATTRNOTIN,BH,,’MC’)";}else{qtsql="selectS0BJ_SH0RTaswd,S0BJ_DISP,S0BJ_PK0BJ,S0BJ_PI^0LfromRPSOBJwheresubstringS0BJ_0BJID,10,lenS0BJ_0BJID+’-’+S0BJ_SH0RTIN"+r⑻tAndwd+"andS0BJ_0BJID=’〃+rpsobjid+andSOBJ_IFJSDX=’110’andSOBJ_AITRNOTIN’BH’,’MC’)";}DataSetqtrootwd=gBBManager.ExecuteDataSetqtsql;ifqtrootwd!=nullqtrootwd.Tables[0].Rows.Count〇{forinti=0;i9mzCol.Length1{stringmzTable=mzObj.Substring9,mzObj.Length-9;stringmzstr=’’(select”+mzCol+”FROM"+mzTable+"wheresystemid=MAX〃+col+〃))as〃+wdtable+"+col.ToUpper;selectkhbh,selectITEMVALfrombimdhcmbwheresystemid=KHGMfromHC_CUSTOMERqtwdShow=mzstr+〃,〃;}qtwdcolums+=qtwdShow;}qtwdcolums=qtwdcolums.Substring0,qtwdcolums.Length-1;}else{qtwdcolums=}wdpkeyAss+=keydcolums;mcwdAss+=mcwdcolums;tjwdAss+=tjwdcolums;qtwdAss+=qtwdcolums;keybys+=keyby;mcwdbys+=mcwdby;tjwdbys+=tjwdby;conditions+=+key+”二”+”W”+k++key+and”;cube所需数据处理带级次的普通维度cubecolEng=wdtable+〃,〃+cubecolEng;ifcubecolEng.Length1{cubecolEng=cubecolEng.Substring0,cubecolEng.Length-1;}CubeWDEngStr+=cubecolEng+cubecolCn=wdtableCnName+〃,〃+cubecolCn;ifcubecolCn.Length1{cubecolCn=cubecolCn•Substring0,cubecolCn.Length-1;}CubeWDCnStr+=cubecolCn+}主键循环结束体系包含的量度string[]IdsArr=Ids.Split,;stringcubezbCn=string.Empty;stringcubeldEng=string.Empty;stringcubeldCn-string.Empty;指标列带聚合sumstringzbscols=string.Empty;string[]zbsArr=zb.Split’,’);forinti=0;i0{cubezbCn+=zbds.Tables[0].Rows[0]["FXZBZD.MC"].ToString+”,";}卻豳升一、、+I8PSN=+suml;8PJqzxmPT+Hmqz++、、0+gadn〇X.I8PIqz+Jums、、=X8PSZ;3UJJ+JSQX•〔bMnlazalsasIm、、l__l〔SSM〇°:〔ss3JqT3x.sp3IPI=OSPISUJJ+JS:Jaddnox.ctsox•〔'xgallazalsasIa、、l__l〔SSM〇°:〔ss3JqT3x.sp3IPI=HapIcUJJ+Js-Jbs0BmIPJ^03^^^00^1130^3..10^^11^388^=speiupupjpespppQr、、+J9ddnox.〔f〕JJVSPI+、、fo=fPUTJOJ}oJo=jPUJjoj}ojIQUjPCMK6ISIO-faXlV0寸SZ寸980Ig码值转换stringmzHelp=wdcnds.Tables[0].Rows[i]TB顶DZBWDZD—Help"].ToString;ifmzHelp.Length16{string[]helpArr=mzHelp.SplitV;stringmzTable=helpArr[0].Substring9,helpArr[0].Length-9;stringmzcol=helpArr[1];stringmzstr="select〃+mzcol+"FROM〃+mzTable+〃wheresystemid="+col+"as〃+txtable+"—〃+col.ToUpper;dlwdShow=mzstr+〃,〃;}dlwdcolums+=dlwdShow;dlwdbys+=dlwdby;}}}}量度所用格式CubeLDEngStr=zb.ToUpper++cubeldEng;CubeLDCnStr=cubezbCn+cubeldCn;zbAss+=zbscols;zbldAss+=zbldcolums;dlwdAss=dlwdcolums;ifwdTables.Length1{wdTables=wdTables.Substring0,wdTables.Length-1;}ifconditions.Length4{conditions=conditions.Substring0,conditions.Length-4;}stringzbAndzbldAss=zbAss+zbldAss;zbAndzbldAss=zbAndzbldAss.TrimO;ifzbAndzbldAss.Length1{zbAndzbldAss=zbAndzbldAss.Substring0,zbAndzbldAss.Length-1;}stringgroupbycols=keybys+dlwdbys+mcwdbys+tjwdbys;ifgroupbycols.Length1{groupbycols=groupbycols.Substring0,groupbycols.Length-1;}sqlserver与oracel数据库差异化处理ifgBBManager.DbType==BIDbType.Oracle{TXSQL="selectSYS_GUIDASCID,〃+wdpkeyAss+mcwdAss+dlwdAss+tjwdAss+qtwdAss+zbAndzbldAss+〃from〃+txtable+〃T,〃+wdTables+〃where〃+conditions+wheres+〃groupby〃+groupbycols;}else{TXSQL="selectNEWIDOASCID,"+wdpkeyAss+mcwdAss+dlwdAss+tjwdAss+qtwdAss+zbAndzbldAss+〃from〃+txtable+"T,"+wdTables+〃where〃+conditions+wheres+〃groupby"+groupbycols;}returnTXSQL;}动态创建cimE核心代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingGenersoft.BI.SPI;usingGenersoft.BI.Manager;usingMicrosoft.AnalysisServices;usingSystem.Data.SqlClient;usingSystem.Data;usingSystem.Data.OleDb;usingSystem.Data.OracleClient;usingSystem.Web;参数说明strCubeDBName所用数据库名),strFactTableName事实表名字符),CubeDLWD退化维度),CubeWD普通维度字符串),strMeasure量度字符串),strFactTableNameCN事实表中文名),CubeDLffDCN退化维度中文名),CubeWDZ普通维度中文),strMeasureZ量度中文名称),tableandcon取数条件)publicstaticvoidBuildCubestringstrCubeDBName,string[]strFactTableName,string[]CubeDLWD,string[]CubeffD,string[]strMeasure,string[]strFactTableNameCN,string[]CubeDLWDCN,string[]CubeffDZ,string[]strMeasureZ,stringtableandcon{stringstrServerName=SERVERIP;应用服务器ipstringstrDBServerName=DBSERVERIP;数据库服务器IPstringstrProviderName=〃msolap〃;stringstrDBName=DATABASE;数据库名称stringstrCubeDataSourceName=DATABASE;cube数据源stringstrCubeDataSourceViewName=DATABASE;cube视图intintDimensionTableCount=CubeWD.Length;维度个数intintFactTableCount=strFactTableName.Length;事实表个数intMeasureNum=strMeasure.Length;量度个数int[]intMeasureNum=newint[MeasureNum];string[][]strMeasureCN=newstring[MeasureNum][];量度中文名string[][]strMeasureEN=newstring[MeasureNum][];量度英文名forinti=0;iMeasureNum;i++{strMeasureEN[i]=strMeasure[i]•Split’#’);strMeasureCN[i]=strMeasureZ[i].Split'#';intMeasureNum[i]=strMeasureEN[i].Length;}intNumDLWD=CubeDLWD.Length;intNumffD=CubeffD.Length;string[][]CubeffDTableAndKey=newstring[NumffD][];string[][]CubeffDFL=newstring[NumffD][];string[][]CubeffDFLCN=newstring[NumffD][];string[][]strTableNamesAndKeys=newstring[MeasureNum*NumffD][];forinti=0;iNumffD;i++{CubeWDFL[i]=CubeWD[i].Split,,,);CubeWDFLCN[i]=CubeTOZ[i].Split,,,);CubeffDTableAndKey[i]=newstring[2];CubeffDTableAndKey[i][0]=CubeffDFL[i][0];CubeffDTableAndKey[i][1]=CubeffDFL[i][1];forintj=0;jMeasureNum;j++{strTableNamesAndKeys[i*MeasureNum+j]=newstring[5];strTableNamesAndKeys[i*MeasureNum+j][0]=CubeffDFL[i][0];strTableNamesAndKeys[i*MeasureNum+j][1]=CubeffDFL[i][1];strTableNamesAndKeys[i*MeasureNum+j][2]=strFactTableName[j];strTableNamesAndKeys[i*MeasureNum+j][3]=CubeffDFL[i][1];strTableNamesAndKeys[i*MeasureNum+j][4]=CubeffDFLCN[i][0];}}ServerobjServer=newServer;DatabaseobjDatabase=newDatabase;RelationalDataSourceobjDataSource=newRelationalDataSource0;DataSourceViewobjDataSourceView=newDataSourceView;DataSetobjDataSet=newDataSet;Dimension!!]objDimensions=newDimension[intDimensionTableCount];连接到AnalysisServices.objServer=ServerConnectAnalysisServicesstrServerName,strProviderName;ssas层创建数据仓库objDatabase=DatabaseCreateDatabaseobjServer,strCubeDBName,strServerName,strProviderName;ssas层创建数据源objDataSource=RelationalDataSourceCreateDataSourceobjServer,objDatabase,strCubeDataSourceName,strDBServerName,strDBName;ssas层创建数据视图objDataSet=DataSetGenerateDWSchemastrDBServerName,strDBName,strFactTableName,strTableNamesAndKeys,intDimensionTableCount;objDataSourceView=DataSourceViewCreateDataSourceViewCubeffDFL,CubeDLWD,objDatabase,objDataSource,objDataSet,strCubeDataSourceViewName,strFactTableName;修改DSVChangeDSVobjDataSourceView,tableandcon,strFactTableName;创建维度、属性、层次、成员属性对象objDimensions=Dimension[]CreateDimensionNumDLWD,NumffD,CubeDLWD,CubeffDFL,CubeDLWDCN,CubeffDFLCN,strFactTableName,strFactTableNameCN,objDatabase,objDataSourceView,strTableNamesAndKeys,intDimensionTableCount,intFactTableCount;创建多维数据集,量度和分配对象CreateCubeobjDatabase,objDataSourceView,objDataSource,objDimensions,strFactTableName,strTableNamesAndKeys,intDimensionTableCount,intFactTableCount,intMeasureNum,strMeasureEN,strMeasureCN,NumDLWD,NumffD,CubeDLWDCN,CubeWDFLCN,strFactTableNameCN,tableandcon,CubeffDTableAndKey;objDatabase.ProcessProcessType.ProcessFull;}AnalysisServices连接privatestaticobjectConnectAnalysisServicesstringstrDBServerName,stringstrProviderName{ServerobjServer=newServer;stringstrConnection="DataSource:"+strDBServerName+〃;Provider:"+strProviderName+Disconnectfromcurrentconnectionifit’scurrentlyconnected.ifobjServer.ConnectedobjServer.Disconnect;elseobjServer.ConnectstrConnection;returnobjServer;}通过上面具体实施方式,所述技术领域的技术人员可容易的实现本发明。但是应当理解,本发明并不限于上述的具体实施方式。在公开的实施方式的基础上,所述技术领域的技术人员可任意组合不同的技术特征,从而实现不同的技术方案。[0033]除说明书所述的技术特征外,均为本专业技术人员的已知技术。

权利要求:1.一种基于动态交叉表的多维数据实时分析方法,其特征在于在前端采用分析向导的形式,自主选择指标和维度;在后台采用SSAS方式,动态地创建⑶该方法实现步骤如下:S1:数据整理,包括体系事实表和维度表,体系事实表包含所要分析的指标字段、量度字段和维度编号字段内容,维度表包含各种炜度字段内容,体系事实表通过维度编号字段与各个维度表相关联;S2:通过指标工具将指标、维度和量度包含到指标体系内;S3:通过语义对象设计器对所有维度加以描述,将维度进行分组和分级;S4:通过分析向导自助完成体系与指标、维度和量度的包含关系;S5:选择所要分析的指标和维度,形成实时分析表。2.根据权利要求1所述的一种基于动态交叉表的多维数据实时分析方法,其特征在于所述指标工具完成指标体系定义、指标定义、维度定义和量度定义,再通过指标体系的包含关系,依次将指标、玮度和量度包含其中。3.根据权利要求2所述的一种基于动态交叉表的多维数据实时分析方法,其特征在于指标体系为事实表,其体系编号与对应的数据库中的表名保持一致,指标编号和量度编号对应表中字段名,且保持一致。4.根据权利要求2或3所述的一种基于动态交叉表的多维数据实时分析方法,其特征在于指标体系中存储纬度编号外键,用于与维度表作关联。5.根据权利要求1所述的一种基于动态交叉表的多维数据实时分析方法,其特征在于语义对象设计器按维度属性划分,将维度分为基本维度、统计依据和其他维度属性。6.根据权利要求1所述的一种基于动态交叉表的多维数据实时分析方法,其特征在于通过分析向导,用户自主选择所要分析的指标,由已选指标关联出所用的维度,进而对已选指标和维度进行条件筛选。7.根据权利要求1或6所述的一种基于动态交叉表的多维数据实时分析方法,其特征在于将所选的指标和维度及筛选条件传到后台程序处理,通过程序控制SSAS操作,从所用的事实表和维度表提取出符合条件的数据,动态创建出CUBE多维分析。8.根据权利要求7所述的一种基于动态交叉表的多维数据实时分析方法,其特征在于指标和量度作sum预处理,CUBE数据反馈到前端,由用户拖拽到行或列,形成动态的实时交叉表。9.根据权利要求1所述的一种基于动态交叉表的多维数据实时分析方法,其特征在于生成的CUBE支持的数据分析模型包括多个指标+多个一般维度+多个退化维度、多个指标+多个退化维度、多个指标+多个复杂维度、5!指标+多个一般维度+多个退化维度和空指标+多个退化维度。10.根据权利要求1所述的一种基于动态交叉表的多维数据实时分析方法,其特征在于指标字段和量度字段为数值型,维度字段为字符型,维度在行或列中体现,指标和量度在值区域中体现,参与具体的聚合计算。

百度查询: 浪潮通用软件有限公司 一种基于动态交叉表的多维数据实时分析方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。