最佳方案处理cubes ArgumentError("String '%s' does not match drilldown level ""pattern 'dimension@hierarchy:level'" % astring)
发布时间:2023-01-30 08:30:01
报错的原因这个错误通常是由于在使用cubes框架时,传递给函数的参数不符合预期的格式导致的。每一部分之间用 '@' , ':' 分隔开来。例如如果您没有hierarchy, 则应该这样建议您检查传递给函数的参数,确保它们符合预期的格式。使用例子是的,下面是一个例子首先,我们定义了一个名为'sales'的cube,一个名为'time_dimension'的维度,一个名为'time_hierarchy'的层级,以及一个名为'year'的层级。在正确调用时,我们使用了正确的格式,而在错误的调用时,由于没有hierarchy, 所以会抛出ArgumentError异常。
报错的原因
这个错误通常是由于在使用cubes框架时,传递给函数的参数不符合预期的格式导致的。具体来说,这个错误消息指出,传递给函数的字符串参数'%s' 不符合"dimension@hierarchy:level" 格式的模式。这意味着您传递给函数的参数不符合预期的格式,需要更改为正确的格式。
如何解决
要解决这个问题,需要检查传递给函数的参数是否符合"dimension@hierarchy:level"格式的模式。如果不符合,则需要更正参数的格式。
具体来说,您需要确保传递给函数的参数是包含三个部分的字符串:dimension,hierarchy和level。每一部分之间用 '@' , ':' 分隔开来。
例如:
"time_dimension@time_hierarchy:year"
如果您没有hierarchy, 则应该这样:
"time_dimension:year"
建议您检查传递给函数的参数,确保它们符合预期的格式。如果需要,更正参数的格式。
使用例子
是的,下面是一个例子:
from cubes import Workspace
# initialize workspace
workspace = Workspace()
# define a cube
cube = workspace.create_model().create_cube("sales")
# define dimension
time_dimension = cube.create_dimension("time_dimension", levels=["year", "month", "day"])
# define hierarchy
time_hierarchy = time_dimension.create_hierarchy("time_hierarchy", levels=["year", "month", "day"])
# define level
year_level = time_hierarchy.create_level("year", "year")
# correct way to call drill-down
browser = workspace.browser(cube)
result = browser.aggregate(drilldown=["time_dimension@time_hierarchy:year"])
# wrong way to call drill-down
try:
result = browser.aggregate(drilldown=["time_dimension:year"])
except ArgumentError as e:
print(e)
首先,我们定义了一个名为'sales'的cube,一个名为'time_dimension'的维度,一个名为'time_hierarchy'的层级,以及一个名为'year'的层级。在正确调用browser.aggregate(drilldown=["time_dimension@time_hierarchy:year"])时,我们使用了正确的格式,而在错误的调用 browser.aggregate(drilldown=["time_dimension:year"])时,由于没有hierarchy, 所以会抛出ArgumentError异常。
注意,此例子是基于cubes框架上的简化版,在实际使用中,您可能需要定义更多维度和层级。