1

我目前正试图围绕 OLAP 多维数据集。

为了学习,我使用立方体框架。

我目前正忙于制作一个取决于两个不同商店的尺寸的立方体。

我试图利用默认情况下所有定义的维度都是公共的这一事实来实现这一点。

下面是一些匿名代码,展示了我如何尝试解决它:

workspace = Workspace()
workspace.register_store("store1", "sql", schema="schema1", url="postgresql://<URL>")
workspace.register_store("store2", "sql", schema="schema2", url="postgresql://<URL>")
workspace.import_model("model1.json", store="store1")
workspace.import_model("model2.json", store="store2")
workspace.import_model("cube_with_dimensions_from_model1_and_model2.json")
browser = workspace.browser("cube_with_dimensions_from_model1_and_model2")

我得到错误

cubes.errors.NoSuchDimensionError:未找到维度“dimesion_from_model2”

这显然意味着它找不到在model1和model2中导入的尺寸。

谁能指出我如何解决这个问题的正确方向?

PS:如果有比这里找到的更多示例项目,我将非常感激。

4

1 回答 1

1

如果没有另外指定,Cubes 当前会为每个商店创建一个单独的命名空间。在您的示例中,每个模型最终都位于商店的命名空间中(即store1and store2)。默认(全局)命名空间保持为空,因此工作区无法在其他商店中找到您的维度。

尝试以下选项之一:

A. 使用默认命名空间

workspace.import_model("model1.json", "store1", namespace="default")
workspace.import_model("model2.json", "store2", namespace="default")

B. 单独的常用维度

将共享维度放入model_common.json(或者更确切地说是common.cubesmodel directory)并单独导入它而不指定任何存储或命名空间(维度将最终在默认/全局命名空间中):

workspace.import_model("common.cubesmodel")
workspace.import_model("model1.json", "store1")
workspace.import_model("model2.json", "store2")
于 2014-08-08T17:12:45.580 回答