- normal维度:
- 定义:
normal
维度是常规的、独立的维度,它会直接参与预计算过程,数据会被存储在存储层(如HBase)。 - 作用:由于数据存储在存储层,
normal
维度可以处理大量数据,并且支持各种聚合操作。然而,这也可能导致更多的资源占用和计算需求。 - 限制:Kylin中的每个cube最多支持63个
normal
维度。过多的normal
维度会导致大量的维度组合(cuboid),从而增加计算复杂性和资源消耗。
- 定义:
- derived维度(可推导的维度):
- 定义:
derived
维度是通过维度表的主键和维度表快照(snapshot)推导出来的维度。它不会直接存储在存储层,而是在查询时从内存中通过主键映射找到必要的维度进行聚合。 - 作用:
derived
维度可以减少存储层的数据量和计算复杂性,因为它们不需要在存储层进行预聚合。此外,它们允许通过单个主键快速检索多个相关维度的值,从而提高了查询效率。 - 示例:例如,如果用户ID (
userid
) 是一个normal
维度,那么可以根据这个userid
推导出用户的名字、位置、性别等derived
维度。 - 注意事项:虽然
derived
维度可以提高查询效率,但它们仍然依赖于normal
维度进行推导。因此,在使用derived
维度时,需要确保相关的normal
维度已经被正确地加载和配置。
- 定义:
总结:
normal
维度是常规的、独立的维度,它们直接参与预计算并存储在存储层,可以处理大量数据和各种聚合操作,但可能占用更多资源。derived
维度是通过主键和维度表快照推导出来的维度,它们不直接存储在存储层,而是在查询时从内存中推导,可以减少存储层的数据量和计算复杂性,并提高查询效率。