您的位置:

解决方案:cubes CubesError("slice() should now be called with a cut (since v0.9.2). To get ""original behaviour of one-dimension point cut, ""use cell.slice(PointCut(dim,path))")

  发布时间:2025-04-27 11:52:07
在Cubes v0.9.2版本中,slice()方法的使用发生了变化,需要使用一个-cut-对象作为参数。出现错误时需要使用cell.slice(PointCut(dim, path))方式。示例代码展示了正确使用slice()方法并传入cut参数的方法。更新后的调用方式需要按新要求使用cut参数。

问题原因

出现CubesError("slice() should now be called with a cut (since v0.9.2). To get ""original behaviour of one-dimension point cut, ""use cell.slice(PointCut(dim,path))")的原因是在Cubes v0.9.2版本中,slice()方法的使用发生了变化。在这个版本之后,slice()方法必须使用一个“cut”对象作为参数,以前的用法直接传递一个维度和路径来切割数据的方式不再被支持。为了保持向后兼容性,如果想要获得原始行为(即使用一维点切割数据),应该使用cell.slice(PointCut(dim, path))这种方式来调用。

解决方案

在cubes库中,从版本0.9.2开始,slice()这个方法需要使用一个cut参数来替代之前的方式。如果出现了CubesError("slice() should now be called with a cut (since v0.9.2). To get "original behaviour of one-dimension point cut, "use cell.slice(PointCut(dim,path))")错误,说明在调用slice()方法时没有传入正确的cut参数。 要解决这个问题,需要按照新的要求调用slice()方法,即传入一个cut参数。对于之前使用slice()方法一维点切片的情况,可以使用cell.slice(PointCut(dim, path))的方式来替代。这样可以保持原有功能行为,并且适配新的版本要求。 下面是一个示例代码,演示如何正确地使用slice()方法并传入cut参数:


from cubes import Cell, PointCut

# 创建一个cell对象
cell = Cell()

# 使用PointCut来创建一个一维点切片
cut = PointCut("dimension_name", "path_to_value")

# 使用新的调用方式传入cut参数调用slice()方法
result = cell.slice(cut)

通过以上方法,你可以解决cubes库中出现的CubesError("slice() should now be called with a cut (since v0.9.2). To get "original behaviour of one-dimension point cut, "use cell.slice(PointCut(dim,path))")错误。

具体例子

Cubes项目在版本0.9.2之后更新了slice()方法的调用方式。现在应该使用cut参数而不是直接传递切片(slice)。为了获得以前的一维点切片(slice)的原始行为,应该使用cell.slice(PointCut(dim, path))方法。 以下是正确使用的例子:


from cubes import PointCut, Workspace

workspace = Workspace()
workspace.import_model("model.json")
browser = workspace.browser("sql")

# 以前的切片(slice)调用方式
result = browser.aggregate(drilldown=["date.year"], cuts={"customer_id": 10})

# 新的cut参数调用方式
cut = PointCut("customer_id", [10])
result = browser.aggregate(drilldown=["date.year"], cut=cut)

# 获得以前一维点切片(slice)的原始行为
cut = PointCut("customer_id", [10])
result = browser.aggregate(drilldown=["date.year"], cut=cut)

通过以上例子,展示了如何通过新的cut参数调用方式以及PointCut来解决"CubesError("slice() should now be called with a cut (since v0.9.2). To get ""original behaviour of one-dimension point cut, ""use cell.slice(PointCut(dim,path))")"错误,并展示了正确的使用方法。