Ch06 OLAP

11/30/2021 DataData warehouseOLAP

# OLAP

# Online Analytic Processing

  • 一种临时分析技术,不要求用户有programming language要求
  • 用户可以自己建立分析,而不是局限于限定的报告img
  • Slice:restrict one dimension to a range of valuesimg
  • Dice: restrict on several dimensionsimg
  • Roll up and drill downimg
  • Pivot and rotateimg
  • drill through: 回归原始表来获取更详细的信息img

# Evaluation

imgimg

OLAP cube的存储:如:一个cube(Table a[n][m][p])就是某天,某家商店,某个商品的销售数据集合img

  • relational:把一个cube view映射到star 或 snowflake schema,用户查询的时候要先把请求映射成sql,然后查询结果映射到cube structure,用户才能看见
  • multidimensional:直接把数据存储到一个n维数组中,可以不用映射到star shema等中,但是可能会出现稀疏cube,并且需要query查询语法才能查询

使用relational storage:哪一个部分的商品的销量在某个月(用户选择)比上个月高出最多?

  • 第一步:当月的销量img
  • 第二步:前一个月的销量img
  • 第三步:比较img
  • 第四步:展示img

使用multidimensional arrays,会有high storage,high processing的问题,因为有conformed dimensionimg

  • measure: 是被totalled的东西,比如销量img
  • 计算存储的下标值:|Di|是维度的大小img
  • 使用Query查询Multidimensional arrays:
    • 维度排列对查询性能很重要img
      • direct access 只要读5个
      • sequencial access 要读10个
  • partitioning: 对某个区间的值感兴趣,可以把cube分割成多个subcubeimg
    • l 表示 low bound
    • u 表示 upper bound
    • 有几种定义partitioning的方式:第二种partitioning比如按照地区img
  • Sparse cubes:img
    • 先用partitioning分割成很多subcube,然后用索引结构,如B树 来存储稀疏的维度,用array来存储密集的维度,只指向存在的subcube
  • Multidimensional Query Language: MDXimg
    • where选的dimension不会出现在最终结果中https://blog.csdn.net/hc1017/article/details/108410110imgimgimgimgimgimgimg
    • where内交外并img
    • 结果自动aggregate

# OLAP data存储和处理:SQL只能用在relational database

img

  • 服务端的存储方式的三种结构:注意方向imgimg
    • MOLAP: 把数据extract过来之后进行处理,存储方式:multidimensional DBMS
    • ROLAP:对数据进行query来获取结果,展示给用户, 存储方式:relational DBMS
    • HOLAP:Hybird,对于详细的数据在relational DBMS中,对于聚合过的数据在multidimensional DBMS中
  • 对比:img

# OLAP 整合 sql

# roll up 操作

img

img

  • roll up 和 grouping sets最后的结果都是一样的,表示方法不一样(不是随意组合,有顺序的!!)
    • 1的结果是黄色的行
    • 2的结果是每块蓝色的第一行
    • 3的结果是把2的结果再aggregate一下,是每块蓝色的第二行
    • 4的结果是把3的结果再aggregate一下,是每块蓝色的第三行

# Grouping关键字:Null值一般来自aggregation

img

  • 为了区别null值是否来自源数据,可以使用grouping 关键字,多加两列,如果是aggregate的结果,那么值为1,不是的话值为0

# Cube关键字:把所有group的排列组合都算一遍,有2的n次方种

imgimgimg

# window关键字:https://blog.csdn.net/xishining/article/details/116408314

img

img

定义:

img

order by:

img

window framing:有两种

imgimg

  • example:

img

rank,Percent_rank(6 个里面排第二名:(2-1)/(6-1)),CUME_DIST(6个里面排第二名:2/6)imgimgimg

dense_rank(), row_number()

img

聚合窗口函数:可以不用sum,用其他的函数

imgimg

  • 例:当前行与前面n行一起算平均值,n=2的话总共算3行img

Filter: 在聚合之前对数据进行筛选

img

Last Updated: 11/19/2024, 1:54:38 PM