您的位置:

最佳方案处理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框架上的简化版,在实际使用中,您可能需要定义更多维度和层级。