jjzjj

什么是OLAP?

宝哥大数据 2024-05-11 原文

文章目录

1.1、OLAP 简介

OLAP 是在线分析处理,顾名思义就是OLAP是用于数据分析的;因此,它使我们能够同时分析来自多个数据库系统的信息。换句话说,我们可以说它是一种计算方法,可以让用户轻松提取所需的数据并查询数据,以便从不同的角度进行分析。

  • 它基本上是基于庞大的数据,称为数据仓库;
  • 它从数据仓库中收集所需的数据并执行业务所需的分析,以在业务中做出一些决策,以提高利润、改善销售、改善品牌、改善营销等等。
  • 因此,它在商业智能中用于趋势分析、销售预测、财务报告、计划目的、预算等方面的查询辅助。

1.2、什么是OLAP?

OLAP 是 OLAP(在线分析处理)是许多商业智能 (BI) 应用程序背后的一项强大技术,它可以发现数据、报告查看功能、复杂的分析计算以及预测性“假设”场景、预算计划、预测计划。

例如,用户可以请求分析数据以显示显示 8 月份在孟买上映的所有电影的电子表格,将收入数字与 12 月同一部电影的收入数字进行比较,然后查看其他电影的比较以检查是否在同一时间段内取得更高的成功并成为有利可图的。因此,通过这种分析,将能够决定电影应该在哪里发行以及通过哪些方式获得更多利润,甚至这种数据分析也有助于规划营销策略,例如在哪里进行营销,如何进行,通过哪些方式进行营销。频道做等。

现在我们将看到 OLAP 是如何工作的

  • 首先从多个数据源(如电子表格、视频、XML 等)收集数据并存储在数据仓库中

  • 然后将其清理并组织成数据立方体(data cube)。

之所以成为立方体(Cube),是因为数据按三个维度或者多个维度分类。因此,每个立方体都包含由数据仓库中的多维表导出的按某些维度(例如客户、时间段、地理销售区域和产品)分类的数据。维度可以由成员填充,也可以用于可以采用分层组织的客户姓名、国家和月份等值的维度,并希望对特定值执行分析。OLAP 多维数据集针对跨维度的频繁查询进行了预先汇总,从而提高了关系数据库的查询执行时间。所以像这样,它可以在一段时间内执行不同类型的分析。

与 OLAP 一样,我们使用的另一个术语是 OLTP,即在线事务处理;两者都是在线处理系统

  • OLTP 是事务处理,主要关注事务任务上的任务,
  • 而 OLAP 是一个分析处理系统,主要关注分析和报告,并为他们提供有价值的见解以改进业务。

OLAP 使销售、管理报告、营销、业务流程管理、财务报告、预算和预测等业务报告的工作变得如此轻松。

1.3、OLAP 可以对 多维数据库 执行五种类型:

  • 汇总(Roll-up): 也称为向上钻取或合并,用于汇总操作数据和维度。
  • 下钻(Roll-down): 在数据维度中进行更深入的分析。例如,从“时间段”向下钻取“年”、“月”和“天”等以绘制产品的销售增长图。
  • 切片(Slice): 执行分析以显示一级信息,例如“2019 年的销售额”。
  • 切块(Dice): 进行分析,从多个维度中选取数据进行分析,例如“班加罗尔2019年青苹果的销售额”。
  • 旋转(Pivot): 执行可以通过旋转多维数据集的数据轴来获得新数据视图的分析。

由于 OLAP 给出具有维度的立方体,然后找到维度的交集,例如,在特定时间段内,孟买的所有电影都是有利可图的,并显示结果。每个 OLAP 多维数据集都包含数百个度量,这些度量至少有一个可能,这些度量实际上是从存储在数据仓库的事实表中的信息中派生出来的。

1.4、OLAP 架构

如图,它通过从多个来源收集数据并存储在数据仓库中开始工作。此外,OLAP 多维数据集是在仓库的清理数据上创建的,用户可以针对这些数据运行查询。

1.4、OLAP(在线分析处理)基本上分为三种类型:

MOLAP(多维 OLAP): MOLAP是一种基于多维数据库索引的 OLAP。

ROLAP (Relational OLAP): ROLAP 是一种对关系数据库存储的数据进行动态多维分析的 OLAP。

HOLAP(混合 OLAP): HOLAP 是 ROLAP 和 MOLAP 的各种集成。用于利用MOLAP开发ROLAP数据容量,超强的处理能力,满足处理需求。

1.5、用途和优势

它可用于数据提取或挖掘、数据分析、报告以发现数据项之间的关系。要从现有关系导入数据,我们可以使用 ODBC(开放数据库连接)来创建 OLAP 多维数据库。趋势分析不需要所有事务数据,因此OLAP数据库不需要像数据仓库那么大。

1.6、缺点

OLAP的一些缺点是必须进行预建模,对IT依赖大,计算能力差,反应慢,缺乏交互分析能力,模型抽象,潜在风险大。

一些分析工具 (OLAP) 是 IBM Cognos、Micro Strategy、Palo OLAP Server、Apache Kylin、Oracle OLAP、icCube、Pentaho BI、JsHypercube 等。

关注我的公众号【宝哥大数据】,更多干货

有关什么是OLAP?的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby-on-rails - Rails - 子类化模型的设计模式是什么? - 2

    我有一个模型:classItem项目有一个属性“商店”基于存储的值,我希望Item对象对特定方法具有不同的行为。Rails中是否有针对此的通用设计模式?如果方法中没有大的if-else语句,这是如何干净利落地完成的? 最佳答案 通常通过Single-TableInheritance. 关于ruby-on-rails-Rails-子类化模型的设计模式是什么?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.co

  3. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby - 为什么 4.1%2 使用 Ruby 返回 0.0999999999999996?但是 4.2%2==0.2 - 2

    为什么4.1%2返回0.0999999999999996?但是4.2%2==0.2。 最佳答案 参见此处:WhatEveryProgrammerShouldKnowAboutFloating-PointArithmetic实数是无限的。计算机使用的位数有限(今天是32位、64位)。因此计算机进行的浮点运算不能代表所有的实数。0.1是这些数字之一。请注意,这不是与Ruby相关的问题,而是与所有编程语言相关的问题,因为它来自计算机表示实数的方式。 关于ruby-为什么4.1%2使用Ruby返

  6. ruby - ruby 中的 TOPLEVEL_BINDING 是什么? - 2

    它不等于主线程的binding,这个toplevel作用域是什么?此作用域与主线程中的binding有何不同?>ruby-e'putsTOPLEVEL_BINDING===binding'false 最佳答案 事实是,TOPLEVEL_BINDING始终引用Binding的预定义全局实例,而Kernel#binding创建的新实例>Binding每次封装当前执行上下文。在顶层,它们都包含相同的绑定(bind),但它们不是同一个对象,您无法使用==或===测试它们的绑定(bind)相等性。putsTOPLEVEL_BINDINGput

  7. ruby - Infinity 和 NaN 的类型是什么? - 2

    我可以得到Infinity和NaNn=9.0/0#=>Infinityn.class#=>Floatm=0/0.0#=>NaNm.class#=>Float但是当我想直接访问Infinity或NaN时:Infinity#=>uninitializedconstantInfinity(NameError)NaN#=>uninitializedconstantNaN(NameError)什么是Infinity和NaN?它们是对象、关键字还是其他东西? 最佳答案 您看到打印为Infinity和NaN的只是Float类的两个特殊实例的字符串

  8. ruby-on-rails - 如果 Object::try 被发送到一个 nil 对象,为什么它会起作用? - 2

    如果您尝试在Ruby中的nil对象上调用方法,则会出现NoMethodError异常并显示消息:"undefinedmethod‘...’fornil:NilClass"然而,有一个tryRails中的方法,如果它被发送到一个nil对象,它只返回nil:require'rubygems'require'active_support/all'nil.try(:nonexisting_method)#noNoMethodErrorexceptionanymore那么try如何在内部工作以防止该异常? 最佳答案 像Ruby中的所有其他对象

  9. ruby - 为什么 SecureRandom.uuid 创建一个唯一的字符串? - 2

    关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion为什么SecureRandom.uuid创建一个唯一的字符串?SecureRandom.uuid#=>"35cb4e30-54e1-49f9-b5ce-4134799eb2c0"SecureRandom.uuid方法创建的字符串从不重复?

  10. ruby - 当使用::指定模块时,为什么 Ruby 不在更高范围内查找类? - 2

    我刚刚被困在这个问题上一段时间了。以这个基地为例:moduleTopclassTestendmoduleFooendend稍后,我可以通过这样做在Foo中定义扩展Test的类:moduleTopmoduleFooclassSomeTest但是,如果我尝试通过使用::指定模块来最小化缩进:moduleTop::FooclassFailure这失败了:NameError:uninitializedconstantTop::Foo::Test这是一个错误,还是仅仅是Ruby解析变量名的方式的逻辑结果? 最佳答案 Isthisabug,or

随机推荐