您的位置:

提示HierarchyError("Can not roll-up: level '%s' – it is ""deeper than deepest element of path %s" %(str(level), path))的解决方案

  发布时间:2023-01-30 11:30:01
报错的原因在 python 中,使用 cubes 库进行多维数据分析时,如果出现错误,通常是由于在 roll-up 操作中指定了比当前路径更深的层级。使用例子是的,下面是一个简单的例子,使用 cubes 库将数据聚合到 "year" 层级上如果您在上面的代码中使用不存在的层级,将会出现例如,如果您尝试将数据聚合到 "month" 层级上,但是 "month" 层级不存在于模型中,将会出现在这种情况下,您应该确保 "month" 层级存在于模型中,或者更改您的聚合操作,使用存在的层级。

报错的原因

python 中,使用 cubes 库进行多维数据分析时,如果出现 "HierarchyError("Can not roll-up: level '%s' – it is deeper than deepest element of path %s" %(str(level), path))" 错误,通常是由于在 roll-up 操作中指定了比当前路径更深的层级。也就是说,试图将数据向上聚合到不存在的层级上。

如何解决

解决这个错误的方法主要有以下几种:

1. 确保在 roll-up 操作中指定的层级存在于当前路径中。检查当前路径的层级结构,确保指定的层级在其中。

2. 确保在 roll-up 操作中指定的层级没有被聚合过。在进行聚合操作之前,检查当前路径是否已经被聚合过。

3. 检查路径的正确性,确保路径包含了需要聚合的所有层级。

4. 检查传入的参数是否正确,确保传入的参数是正确的。

5. 尝试使用相对路径来解决这个问题。

总之,解决这个错误需要检查层级结构、路径和参数的正确性。

使用例子

是的,下面是一个简单的例子,使用 cubes 库将数据聚合到 "year" 层级上:


from cubes import Workspace

# Create a new workspace
workspace = Workspace()

# Register a model
workspace.register_default_store("sql", url="sqlite:///data.sqlite")

# Create a new cube
cube = workspace.cube("sales")

# Roll-up data to the "year" level
result = cube.aggregate(drilldown=["date.year"])

# print result
print(result)

如果您在上面的代码中使用不存在的层级,将会出现 HierarchyError

例如,如果您尝试将数据聚合到 "month" 层级上,但是 "month" 层级不存在于模型中,将会出现 HierarchyError


result = cube.aggregate(drilldown=["date.month"])

在这种情况下,您应该确保 "month" 层级存在于模型中,或者更改您的聚合操作,使用存在的层级。