因此,这里我们有一些国家的一些参数值的模型(django模型),按科目划分(如中央科目、西部科目等)和行政单位(学科区域。如俄罗斯中央学科莫斯科地区)。
class Years(models.Model):
year = models.PositiveSmallIntegerField()
class Geography(models.Model):
name = models.CharField(max_length=500)
subject_id = models.UUIDField(null=True)
subject_label = models.CharField(max_length=500, null=True)
administrative_unit_id = models.UUIDField(null=True)
administrative_unit_label = models.CharField(max_length=500, null=True)
class Param(models.Model):
name = models.CharField(max_length=500)
codename = models.CharField(max_length=5)
class Fact(models.Model):
year = models.ForeignKey(Years)
geography = models.ForeignKey(Geography)
param = models.ForeignKey(Param)
value = models.DecimalField(max_digits=20, decimal_places=5, null=True)
每个参数值都有以下维度:年份、地理位置(主题或管理单位。但id仅用于地理位置)和param-type/code/name。
因此,在models.json中,我们可以看到Geography有哪些级别:科目由行政单元组成,但每个科目都有自己的年度参数值。(行政单位也是如此)。
models.js
{
"dimensions": [
{
"name": "cubes_viewer_years",
"levels": [
{
"name": "cubes_viewer_years",
"label_attribute": "year",
"attributes": [ "id", "year"],
"info": { "cv-datefilter": true}
}
]
},
{
"name": "cubes_viewer_param",
"levels": [
{
"name" : "param",
"attributes": ["id", "codename", "name"],
"label_attribute": "name"
}
]
},
{
"name": "cubes_viewer_geography",
"levels": [
{
"name": "subject",
"attributes": [ "subject_id", "subject_label"],
"key": "subject_id",
"label_attribute": "subject_label"
},
{
"name": "administrative_unit",
"attributes":
[ "administrative_unit_id", "administrative_unit_label"],
"key": "administrative_unit_id",
"label_attribute": "administrative_unit_label"
}
]
}
],
"cubes": [
{
"name": "cubes_viewer_fact",
"label": "Индикаторы",
"measures": [{"name": "value", "aggregates": ["sum", "avg", "max", "min"]}],
"dimensions": ["cubes_viewer_years", "cubes_viewer_param", "cubes_viewer_geography"],
"joins": [
{"master": "cubes_viewer_fact.year_id", "detail": "cubes_viewer_years.id"},
{"master": "cubes_viewer_fact.param_id", "detail": "cubes_viewer_param.id"},
{"master": "cubes_viewer_fact.geography_id", "detail": "cubes_viewer_geography.id"}
]
}
]
}
问题:如果我想按行政单位进行深入研究,一切都很好(除了像subject_NAME/这样命名的每个主题的值,而不是subject_NAME/ADMINISTRATIVE_UNIT_NAME。(在多维数据集查看器的筛选器面板中))。一切都过滤得很好。
但是,如果我想按主题进行深入研究——多维数据集查看器的过滤面板允许选择太多的主题名称值——比如每个管理单元名称都有一个类似主题的(不是唯一的)。
这是不对的。如何为这种数据层次结构构建多维数据集模型层次结构。或者我可以分开地理表。是这样吗?如何为此构建正确的多维数据集模型层次结构?
也许我在文档中遗漏了一些内容,但我尝试使用多维数据集查看器webvisits应用程序中的示例,上面的描述是我得到了。。。
谢谢
您可以将Geography分为两个表(在这种情况下,您可以向join
添加一个条目,定义如何连接这些表)。
但你不应该那样做。立方体可以处理这个问题,你的联接和维度配置对我来说似乎是正确的。
也许你错过了mappings
:
"mappings": {
"cubes_viewer_geography.subject_id": "cubes_viewer_geography.subject_id",
"cubes_viewer_geography.subject_label": "cubes_viewer_geography.subject_label",
"cubes_viewer_geography.administrative_unit_id": "cubes_viewer_geography.administrative_unit_id",
"cubes_viewer_geography.administrative_unit_label": "cubes_viewer_geography.administrative_unit_label"
}