如何表示 OLAP 4D 长方体?
Posted
技术标签:
【中文标题】如何表示 OLAP 4D 长方体?【英文标题】:How Do I Represent An OLAP 4D Cuboid? 【发布时间】:2016-01-15 14:35:36 【问题描述】:我正在完成下面发布的练习。我不太明白如何在纸上表示第四维。如果只是客户、日期、产品,那将是直截了当的。我是否必须汇总某些内容才能获得第四维?
我打算深入研究产品化妆品,按时切块(以便在 2010 年 1 月之后得到所有东西)并切入化妆品。
假设一个市场购物数据仓库由四个维度组成: customer、date、product 和 store,以及两个度量:count 和 avg sales,其中 avg sales 以最低的英镑存储实际销售额 级别,但其他级别的相应平均销售额。
从基础长方体 [客户、日期、产品、商店] 开始,什么 特定的 OLAP 操作(例如,将学生汇总到部门(级别)) 应执行以列出每个的平均销售额 自 2010 年 1 月以来的化妆品?解释你的答案。
【问题讨论】:
这是一个措辞糟糕的练习题。按月计算的“平均销售额”中的“平均”是多少?店铺?但是,您自己的问题也让我感到困惑-您是什么意思“在纸上代表第四维度”?这不是关于在视觉上表示所描述的多维空间,而是关于达到正确值的步骤。例如,“客户”可能应该汇总到“所有客户”,因为问题没有指定任何其他分组。 【参考方案1】:不要将星型架构中的维度与空间和时间维度混淆。把它放在视觉上像时钟一样,你的事实表是表盘的中心,你的尺寸在 12、3、6 和 9 点钟位置。
星型模式可能有一个事实(销售额),其粒度未定义,但可以合理地假设为日。
这个问题并不精确,因为它没有定义要计算“平均值”的时间段。我们可以计算每天的平均销售额,但是由于提到了汇总,并且我们已经获得了一个月/年的起点,我们假设它是平均每月销售额。
我们还假设“化妆品”代表一组产品,我们已经在产品维度中定义了它。
我们的日期维度可以合理地带有年月属性。这种情况很常见。
SQL 查询可能如下所示:
select product.name,calendar.year_month,avg(sales.amount)
from sales
left join product
on product.id = sales.product_id
left join calendar
on calendar.id = sales.calendar_id
where calendar.year_month > '2010-01'
and product.category = 'cosmetics'
group by product.name,calendar.year_month
因为您被要求进行 OLAP 操作,所以语法会因产品而异。从概念上讲,您的想法是正确的,按时间(年月)和产品(类别)划分,以及平均销售额。您可以忽略此查询的客户和商店维度。
这有意义吗?
【讨论】:
嗨,罗恩,谢谢。我一直在笛卡尔轴上看到一个 3D 长方体,这就是为什么我想知道如何获得第四维。我还编辑了我的问题,我省略了第一部分。当它说“最低级别”时,是指长方体的最低级别吗?即使在这种情况下,也不是那么清楚。 是的,Edoardo,在这种情况下,“最低级别”是指单个销售交易。当问题询问“其他级别”时,表示聚合信息正在存储在立方体中,“平均销售额”数字也正在平均。我想这个问题有一些学术价值,但它是可怕的现实世界设计:) 好的,谢谢。这是有道理的,所以我可以在长方体(基本上是我的事实表)的一个单元格中存储多个度量(如平均销售额和计数)吗?以上是关于如何表示 OLAP 4D 长方体?的主要内容,如果未能解决你的问题,请参考以下文章