[AX]AX2012 商业智能分析

我只是一个虾纸丫 提交于 2020-01-16 21:13:54

分析AX的数据时常作的一件事情就是把AX的表数据导出到Excel后使用数据透视表分析,复杂点的数据可能还需要在两个数据表间先做Lookup整理数据,实际上这就是SQL server analysis服务实现的功能,它负责从数据源中获取数据,从不同维度对数据做汇总,其中最重要的概念就是Cube、Measure和Dimension。Measure是我们关注的数据,比如销售额,Dimension定义了观察数据的角度,比如销售月份、客户分组等,而Cube则是Measure和Dimension的集合。AX使用已经安装运行的SQL分析服务,所以AX的安装工具里面只有配置安装服务的选项,通过它指定分析服务器,配置信息可以在System administration>Setup>Bussiness intelligence>Anaysis service>Analysis server找到。

我们可以使用SQL server自带的分析服务工具(随SQL安装的Visual studio工具)创建Analysis service工程,添加Cube、Measure、Dimension、KPI等,编译部署到分析服务器。手工创建cube分析AX的数据是件很繁琐的事情,因为AX表之间错综复杂的关系(打开AOT/Visual studio projects/Analysis service projects/Dynamics Ax看看Data source view中那密密麻麻的关系连接线!),定义众多Dimension耗时耗力,但是这一切都因为AX的“SQL server analysis service project wizard”(在Tools>Bussiness intelligence BI下)而变得简单。SQL server analysis service project wizard主要完成以下功能:

  • 部署已有分析服务工程到分析服务器:这个操作AOT/Visual studio projects/Analysis service projects下分析服务工程导出后编译部署到分析服务器。
  • 配置分析服务工程:在我们更改了License及configuration key之后我们需要做这个工作,把Configuration中没用的表/视图相关Measure、Dimension从工程中剔除掉,AX在安装时自带一个“Dynamics AX”分析服务工程,需要根据实际的AX系统配置重新配置。要注意的是如果删除了工程中的某个KPI,重新部署时该KPI不会自动从服务器上删除,需要手工删除,简单的操作是干脆删掉整个分析数据库后重新部署。
  • 更新分析服务工程:可以选择分析服务工程包含哪些cube,选择要包含的财务维度,选择日期维度,最后重新部署到分析服务器。日期维度按年度、半年、季度、月份、周来组织,在ystem administration>Setup>Bussiness intelligence>Anaysis service>Date dimensions维护,可以按照自己的方式来创建一个新的日期维度。
  • 创建新的分析服务工程:创建新的分析服务工程保存到AOT,可以自定义包含的cube、财务维度和日期维度。新的工程中cube是不包含任何KPI的,要手工在BI Develop studio tools中添加。

除了使用SQL server analysis service project wizard更新部署分析服务工程,我们可以直接右键点击AOT/Visual studio projects/Analysis service projects下的工程,菜单中选择Edit来编辑,AX将工程从AOT导出到临时目录并在BI develop studio打开,修改后直接在Visual studio中编辑并部署。要把编辑后的服务工程导回到AOT,点击AOT/Visual studio projects/Analysis service projects节点右键菜单Import。

分析服务工程部署到分析服务器后,还需要处理以生成结果数据,可以在SQL management studio中点击分析数据库右键菜单中选择Process来手工处理,也可以使用SQL Agent或者SQL集成服务来自动化调度处理。

权限上分析服务数据库也使用Role角色来管理权限,但这个Role和AX的Role不是同步的,默认分析服务工程中包含了Sales manager、Financial controller等众多角色,你需要手工添加域用户到相应的角色。新建的分析服务工程中你可以在BI Visual studio中定义好Role再部署到分析服务器,在SQL management sutdio中定义的Role不会保存回分析服务工程。

使用分析服务的数据有很多方式:

  • BI Visual studio:可以直接在打开的分析服务工程中预览数据,当然需要cube已经部署到服务器并处理。机器上需要安装有SQL Server Shared Management Objects,否则会收到XXX没有注册的错误。
  • SQL management studio:点击一个cube右键菜单中选择Browse查看,也需要安装有SQL Server Shared Management Objects。
  • Excel:在Data工具栏上选择From other source>From analysis service,对话框中选择分析服务器、cube等,最后使用数据透视表分析cube数据。
  • AX ssrs报表:在SSRS报表中使用分析服务数据库创建一个数据源,以此数据源创建报表。AX部署报表服务时会创建一个名为DynamicsAXOLAP的数据源,连接到默认的分析服务数据库"Dynamics AX",你需要根据自己的环境更新其连接字符串。普通SQL server report service报表当然也可以使用分析服务数据,比如使用Report server的Report builder工具创建报表并选择分析服务作为数据源。
  • EP:在EP页面上添加Bussiness overview web part,web part属性中选择从分析服务器要显示的KPI。如果EP服务器和分析服务器不在同一台服务器上,在Web part中添加KPI时你可能会遇到错误“An unexpected error occurred while processing the Business overview Web part. Contact your system administrator.”,解决办法是安装补丁“Knowledgebase 2744197”,同时确认Bussiness proxy的账号被添加为分析服务实例的管理员。

知道了使用SQL server analysis service project wizard生成分析服务工程,它又是怎么知道该如何生成cube的了?答案自然也在AOT中:

  • Perspective:AOT/Data dictionary/Perspectives下的每一个Perspective节点就是cube,我们可以在这里创建自己的Perspective生成新的Cube,Perspective的Label指定了Cube的名称,Usage属性为OLAP才会出现在SQL server analysis service project wizard的cube选择列表中。每个Perspective有Table和View两个节点,可以将表和视图分别拖入到这两个节点下作为分析的数据源。如果任何一个表的createdDateTime设为了No,cube可能会处理失败,你需要使用SQL server analysis service project wizard工具更新下分析服务工程,或者直接在BI Develop tools中从数据源中删除产生错误的表列。另外AX2012 R2不支持继承子表,如果要使用继承子表的字段,最好创建视图后在Perspective中使用。表/视图的Fields属性默认为Dynamic,所有的字段被列出,可以手工设置该属性为No后手工添加数据字段。
  • 定义Measure:设定表/视图字段的属性AnalysisUsage为Measure定义度量,度量的聚合方法在AnalysisDefaultTotal属性指定,比如Sum、Count、Min、Max等。这两个属性设置为Auto时都根据其EDT上设置决定,枚举类型是不能选择为度量的。对数值为金额的字段我们还需要指定其ExchangeRateDateField为相应的日期字段以此来确定汇率换算时选用的日期。表中的所有度量值放到同一个Measure group,Measure group的名称取自具体表/视图的Label,或者在属性AnalysisMeasureGroupLabel自定义。
  • 定义维度:维度是根据表/视图属性AnalysisDimensionType生成,它和表的IsLookup属性配合使用:
    • IsLookup=Yes:Auto表示表同时包含事实数据和维度数据,BI wizar分别为其创建Measure和维度,父表的attribute(后面说明)被创建为子维度;MasterInner表示该使用full join连接该表和它的子表,join后的结果记录被创建为维度,父表的atrribute则被创建为子维度;MasterLeftOuter 使用左外连接关联该表和其子表,得到的维度数据因此可能会包含空值,父表的attribute也同样被创建为子维度;Transactions表示该表只用来生成Measure,只有表中的枚举字段被创建为子维度。
    • IsLookup=No:Auto和Transactions铜IsLookup=Yes,MasterInner和MasterLeftOuter和Auto相同没有意义。

具体哪些字段要作为维度Attribute是把字段的AnalysisUsage属性设置为Attribute,如果设置为Both则字段值既作为度量也作为维度Attribute,同样如果这个属性为Auto则是根据EDT上的设定来确定,枚举类型则只能作为维度Attribute使用。维度的名称也是来自于表/视图的Label属性,或者通过AnalysisDimensionLabel自定义。

  • 组织等级维度:如果我们需要定义公司组织架构等级的维度,只需要把Dictionary > Views > BISampleOrgHierarchyView添加到Perspective,它是一个预定义好的组织架构维度视图。
  • 日期维度:前面已经提及,在ystem administration>Setup>Bussiness intelligence>Anaysis service>Date dimensions维护,只需要在BI Wizard选择要使用的日期维度就可以了。
  • 财务维度:这也是在BI Wizard选取,不需要在Perspective中设定。

我们可以根据自己需求创建新的Perspective/Cube,选择相应的度量值和维度Attribute,剩下的工作就交给SQL server analysis service project wizard,不需要去处理表数据之间的关联关系,极大的简化了分析Cube的创建。 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!