如何在databrewery多维数据集中从多个商店创建OLAP多维数据集

时间:2014-08-08 15:27:43

标签: python olap cubes

我目前正试图绕过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,我将非常感谢。

1 个答案:

答案 0 :(得分:1)

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

请尝试以下选项之一:

甲。使用默认命名空间

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")