多维数据集模型是用户无需处理的底层结构。 data.cube-oop 使用以下内容 数据模型 。 准确地去你的例子。您不能以这种方式在雪花模式中添加新维度。必须将新维度连接到事实表。雪花模式中未直接连接到事实表的表只是维度中的层次结构级别。在你的例子中,这意味着 客户维度 只是地理维度的更高级别属性。您最终可能会相反,创建客户维度,并在更高级别的客户层次结构中保留地理属性。 无论如何,您决定这样做,您必须从每个单独的表创建您的维度(当然可以是相同的宽表)。你不能通过单独提供它来构建维度,这将比单个非规范化维度表更令人困惑,这是用户最常处理的事情。 因此,为了在客户维度中保留地理属性,只需在客户表和供应中查找地理值 as.dimension 用新表。
data.cube-oop
as.dimension
至于问题的第二部分,层次结构列表定义层次结构中属性之间的关系,而不是数据类型。 LHS上的列名称定义层次结构级别中的键列,而RHS定义将在该特定级别上存在的依赖属性。您基本上定义哪个列在层次结构中的哪个级别上,较低级别必须引用上级以创建真正的层次结构。这是由数据的唯一性强制执行的,即您必须只有一个 time_month_name 为每个人 time_month 。 要更好地了解此关系,请尝试以下操作:
time_month_name
time_month
library(data.cube) X = populate_star(N = 1e3) dc = as.data.cube(X) dc$dimensions$time$levels
它将按时间维度打印所有层次结构级别,每个层次结构级别是一个单独的表。