Analysis Services 教程方案
适用于: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
本教程基于 Adventure Works Cycles(一家虚构的公司)。 Adventure Works Cycles 是一家大型跨国制造公司,生产金属和复合自行车并将其分销到北美、欧洲和亚洲的商业市场。 Adventure Works Cycles的总部设在华盛顿的布塞尔,公司在那里雇佣了500名工人。 此外,Adventure Works Cycles 在其市场基础中聘请了多个区域销售团队。
近年来,Adventure Works Cycles收购了位于墨西哥的一家小型制造厂——Importadores Neptuno。 Importadores Neptuno 为 Adventure Works Cycles 产品系列生产几个关键子组件。 这些子组件将被运送到伯瑟尔市进行最后的产品装配。 在 2005 年,Importadores Neptuno 转型成为专注于旅游登山车系列产品的独立制造商和销售商。
在成功的财政年度之后,Adventure Works Cycles 现在希望通过向最佳客户投放广告、通过外部网站扩展产品可用性以及通过降低生产成本来降低销售成本,从而扩大市场份额。
当前分析环境
为了支持销售和营销团队以及高级管理层的数据分析需求,该公司目前从 AdventureWorks2012 数据库获取事务数据,以及来自电子表格的销售配额等非事务性信息,并将此信息合并到 AdventureWorksDW2019 关系数据仓库中。 但是,关系数据仓库存在下列问题:
报表是静态的。 用户无法以交互方式浏览报表中的数据以获取更详细的信息,例如,他们可以使用 Microsoft Office Excel 数据透视表。 虽然现有的一组预定义报表足以供许多用户使用,但更高级的用户却需要对数据库进行直接查询访问,以进行交互式查询和访问专用报表。 但是,由于 AdventureWorksDW2019 数据库的复杂性,此类用户需要太多时间来了解如何创建有效的查询。
查询性能差异很大。 例如,有些查询只需几秒钟便可非常迅速地返回结果,而另一些查询需要几分钟才能返回结果。
聚合表难以管理。 为了缩短查询响应时间,Adventure Works 的数据仓库团队在 AdventureWorksDW2019 数据库中构建了多个聚合表。 例如,他们生成了一种按月汇总销售额的表。 然而,尽管这些聚合表可显著提高查询性能,但是,他们所生成的用于在一段时间内维护这些表的基础结构却容易破坏并出现错误。
复杂的计算逻辑隐藏在报表定义中,所以很难在报表之间共享。 由于这种业务逻辑针对每个报表单独生成,因此,各个报表的汇总信息有时是不同的。 所以,管理人员对数据仓库报表数据的信任度是有限的。
用户所在的业务部门不同,其感兴趣的数据视图也不同。 每个组都很难理解与其不相关的数据元素。
对于需要专用报表的用户而言,计算逻辑非常具有挑战性。 由于这类用户必须为每个报表单独定义计算逻辑,因此,无法对如何定义计算逻辑进行集中控制。 例如,有些用户知道他们应使用基本统计技术(如移动平均值),但他们却不知道如何构建此类计算,因而也就无从使用这些技术。
组合相关的信息集时存在难度。 业务用户很难构造一些专用查询,以组合两个相关的信息集(如销售额和销售配额)。 此类查询会占用大量的数据库空间,因此,公司要求用户向数据仓库团队请求跨主题区域的数据集。 因此,仅定义了少数预定义报表,这些报表可以用于组合来自多个主题区域的数据。 此外,由于这些报表非常复杂,因此用户不愿尝试修改这些报表。
报表主要提供美国的业务信息。 非美国分公司的用户非常不满意只提供美国的业务信息,他们希望能够查看不同货币和不同语言的报表。
信息难以审核。 财务部门目前仅将 AdventureWorksDW2019 数据库用作批量查询的数据源。 然后,再将数据下载到单个电子表格中,并花费大量时间准备数据和处理电子表格。 因此,很难在整个公司内准备、审核和管理公司财务报表。
解决方案
数据仓库团队最近对当前分析系统执行了设计评审。 评审包括当前问题和未来需求之间的差距分析。 数据仓库团队确定 AdventureWorksDW2019 数据库是设计良好的维度数据库,具有一致维度和代理键。 相符的维度可使某个维度用于多个数据集市中,例如时间维度或产品维度。 代理键是链接维度表和事实数据表的假键,用于确保唯一性并提高性能。 此外,数据仓库团队确定, 目前在 AdventureWorksDW2019 数据库中加载和管理基表时没有重大问题。 因此,团队决定使用 Microsoft SQL Server Analysis Services来完成以下任务:
通过一个通用的元数据层提供统一的数据访问以进行分析和报告。
简化用户的数据视图,从而加速交互式查询、预定义查询以及预定义报表的开发。
正确构造可组合来自多个主题区域的数据的查询。
管理聚合。
存储和重用复杂的计算。
为美国以外的业务用户提供本地化体验。