2. 6 处理维度层次关系

2. 6 处理维度层次关系

维度层次,多维度数据库是按照多维数据库模型的思想来建立的。而一个多维数据模型是由多个维度和事实组成。维度是多维数据模型中非常重要的概念,要进行多维分析、编写高效准确的MDX查询,首先要对维以及维度的概念分层有比较深刻的印象。

维是描述事实的角度,也即观察数据的角度。****一个多维数据模型通常都包含多个维度。比如:描述企业的销售信息这样一个事实,我们可能要用到客户维度、时间维度、产品维度、仓库维度等****。

在多维数据库中,维度表的来源通常都是关系型数据库中的基础数据表,如上面提到的客户维度就来自关系数据库中的客户表,产品维度就来自关系数据库中的产品表等等。而这些维度除了与事实表相关联的键属性以外还有很多其他的数据表属性。

在基于关系数据的查询中,我们可能更多的关注表之间的关系。而在多维数据库中,应该把思维改进一下,应该理解和注意维度属性之间的关系,分析维度中每个属性之间的关系。而维度属性之间的关系就引出了维度层次。维度往往存在层次关系。维度中的一些描述属性以层次方式或多对一的方式相互关联,可以理解为包含连续主从关系的属性层次。层次的最底层代表维度中描述最低级别的详细信息,最高层代表最高级别的概要信息。,维度中常常有这样的嵌入式层次结构。

递归层次指的是某维度的实例值的层次关系。按照层级是否固定分为均衡层次结构和非均衡层次结构。其中具有固定数量级别的递归层次,称为均衡层次结构;数量级别不固定的递归层次称为非均衡层次结构,比如公司之间的关系,每个公司可能存在一个母公司,但是可能没有固定的一级、二级等层级关系。

下面我们从最基本维度层次的开始讲起。

1 固定深度位置的层次

固定深度层次是一系列的多对一关系,如产品→品牌→类别→部门,对于商品而言,每个部门会有多个类别,每个类别又会有多个品牌,每个品牌下又会有多个产品。当固定层次定义完成后,层次类别就有了商定的名称,层级级别应作为不同的位置属性存在维表中,如产品→品牌→类别→部门,应有4个字段来分别对应层次的每一级别,而不是将该层次存储成一个字段。

与其他技术相比,固定层次关系是最好理解和导航(navigate)的层次关系,同时它也能提供快速且可预测的查询性能。如果层次关系不是多对一的关系,或者层次级别各不相同以致没有固定的商定名称,那么需要使用一下的不定层次技术。

2 轻微参差不齐 / 可变深度层次

轻微参差不齐的层次虽然没有固定的层级级别,但深度的变化范围很小,如地理层次深度通常都在3~6层。对于这种情况而言,与其使用复杂的处理不可预测的可变层次的技术,不妨将其转换为固定深度的设计,同时用维度属性来确定最大的级别数,然后基于规则填充属性值。回填是填充属性的一种常用方式,他将属性向下虚拟,如二级、三级为空,则用一级属性值对二三级进行填充。阿里巴巴大数据之路(p181)对此进行了详细的案例介绍。

3 具有层次桥接表的参差不齐 / 可变深度层次

在数仓建模中,对于有层次关系的维度表,一种建模方式是建立父子表,该方式建表在层次深度可变时尤其有用,是一种紧凑而有效的建模方式。但是该方法也有缺点:在关系型数据库中,不定深度的层次很难建模和查询,用标准SQL很难对递归结构进行操作。尽管SQL扩展和OLAP访问语言对递归的父/子关系提供了一些支持,但是这种方式也很有局限性。

采用SQL扩展,在查询时,不能替换不同的参差不齐层次,不支持对自身层次结构的共享,同时也不支持随时间变化的参差不齐层次。

With SQL extensions, alternative ragged hierarchies cannot be substituted at query time, shared ownership structures are not supported, and time varying ragged hierarchies are not supported

以上这些问题在关系型数据库中都可以通过对可变层次建立桥接表来解决。桥接表对可变层次中每一种可能的路径都保留一行,使得采用标准SQL就能完成对所有层次的遍历,而不需要其他语言扩展。

4 具有路径字符属性的可变深度层次

​ 可以在维度中采用路径字符属性,以避免使用桥接表示可变深度层次。对维度中的每行,路径字符属性包含特定的嵌入文本字符,包含从层次最高点道特定唯独行所描述节点的完整路径描述。

多层标准层次分析需求可以通过标准SQL处理,不必采用SQL语言扩展。然而,路径字符方法不能确保其他层次的快速替换,也无法保证共享自身层次。路径字符方法也难于构建可变路径层次的变化,

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GNN(图神经网络)在预测数据处理方面有多种方法。一种常见的方法是将时间序列数据转化为图结构,然后使用GNN对图进行处理。这种方法可以通过将时间序列数据中的每个时间点作为图的节点,然后根据节点之间的关系构建边。接着,可以使用GNN对图进行卷积操作,从而提取节点之间的空间关系。这样,GNN可以学习到时间序列数据中的复杂模式和关联性,进而用于预测任务。\[1\] 另一种方法是将GNN与LSTM结合使用。这种方法先将时间序列数据通过GNN进行空间上的卷积操作,然后将结果输入到LSTM中进行时间上的卷积操作。这样可以同时考虑时间和空间的关系,从而更好地捕捉时间序列数据中的模式和趋势。\[1\] 此外,还可以将GNN与一维卷积操作结合使用。一维卷积本质上是对时间序列数据的卷积操作,而GNN也可以看作是一种卷积操作,只是它只对时间序列数据的某个维度进行变换。因此,可以将GNN和一维卷积操作结合起来,通过对时间序列数据进行多层次的卷积操作,从而更好地提取特征和模式。\[2\]\[3\] 总之,GNN在预测数据处理中可以通过将时间序列数据转化为图结构,与LSTM或一维卷积操作结合使用,从而提取时间序列数据中的空间关系和模式,用于预测任务。 #### 引用[.reference_title] - *1* *2* *3* [PyTorch搭建GNN-LSTM和LSTM-GNN模型实现多变量输入多变量输出时间序列预测](https://blog.csdn.net/Cyril_KI/article/details/128621012)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值