cube中,aggregation_groups用法
在 Apache Kylin 中,aggregation_groups
是 cube 设计的一部分。它定义了一个或多个维度组(dimension groups),用于预聚合数据以提高查询性能。
每个 aggregation group 是一个 cube 维度的子集,每个子集中的维度将会一起进行预聚合。这意味着,Kylin 将为每个可能的组合生成预聚合的结果并存储,以便在查询时使用。
在 Kylin 中定义 aggregation groups 的语法如下:
"aggregation_groups": [
{
"includes": ["dim1", "dim2"],
"select_rule": {
"hierarchy_dims": [["dim1", "dim2"]],
"joint_dims": [["dim3", "dim4"]],
"mandatory_dims": ["dim5"]
}
}
]
在以上示例中,该 aggregations group 包含 dim1 和 dim2 的所有可能的组合。同时,通过 select_rule
定义了更复杂的规则:
hierarchy_dims
定义了层级关系的维度。例如,如果你有“国家”和“城市”两个维度,并且他们有层级关系(也就是说,每个城市都位于一个国家中),那么你可以将它们放在同一个层级列表中。joint_dims
定义了联合维度,这些维度总是一起出现在查询中。如果你知道两个或更多的维度总是一起出现在查询中,那么你可以将它们放在一个联合列表中。mandatory_dims
定义了强制维度,这些维度总是出现在聚合组的每个预聚合结果中。
注意,你项目中的实际需求和数据模型可能会影响你如何设计 aggregation groups。要获取最佳性能,可能需要进行一些试验和优化。