我目前正试图绕过OLAP多维数据集。
为了学习,我使用的是cubes框架。
我目前正在制作一个取决于来自两个不同商店的尺寸的立方体。
我尝试使用以下事实:默认情况下,所有已定义的维度都是公开的。
下面是一些匿名代码,显示了我是如何解决它的:
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:Dimension&#39; dimesion_from_model2&#39; 找不到
这显然意味着它无法找到在model1和model2中导入的维度。
有人能指出我如何解决这个问题的正确方向吗?
PS:如果有多个样本项目而不是here,我将非常感谢。
答案 0 :(得分:1)
如果没有另外指定,立方体当前为每个商店创建一个单独的命名空间。在您的示例中,每个模型最终都在商店的名称空间中(即store1
和store2
)。默认(全局)命名空间保持为空,因此工作区无法在另一个商店中找到您的维度。
请尝试以下选项之一:
workspace.import_model("model1.json", "store1", namespace="default")
workspace.import_model("model2.json", "store2", namespace="default")
将共享维度放入model_common.json
(或更确切地说common.cubesmodel
directory)并单独导入,而不指定任何商店或命名空间(维度将在默认/全局命名空间中结束) :
workspace.import_model("common.cubesmodel")
workspace.import_model("model1.json", "store1")
workspace.import_model("model2.json", "store2")