以编程方式创建与事实维度的关系

Posted

技术标签:

【中文标题】以编程方式创建与事实维度的关系【英文标题】:Programatically create Relationship to Fact Dimension 【发布时间】:2018-08-31 10:43:27 【问题描述】:

我想基于同一个事实表在度量组和“事实维度”之间创建“事实”类型的关系。

我使用下面的代码

var cubeDim = OlapCube.Dimensions.GetByName(dimensionName);
var regMgDim = new RegularMeasureGroupDimension(cubeDim.ID);
olapMeasureGroup.Dimensions.Add(regMgDim);

var cubeDimKeyAttr = cubeDim.Dimension.KeyAttribute;
var mgAttr = regMgDim.Attributes.Add(cubeDimKeyAttr.ID);
mgAttr.Type = MeasureGroupAttributeType.Granularity;

但它被创建为“常规”类型的关系。

我希望它以这样的方式结束(查看关系类型):

【问题讨论】:

【参考方案1】:

设法弄明白了。

代码应该是,

var cubeDim = OlapCube.Dimensions.GetByName(dimensionName);
var regMgDim = new DegenerateMeasureGroupDimension(cubeDim.ID);
olapMeasureGroup.Dimensions.Add(regMgDim);

DegenerateMeasureGroupDimension这个名字虽然不明显,但创建事实维度关系的维度。

【讨论】:

以上是关于以编程方式创建与事实维度的关系的主要内容,如果未能解决你的问题,请参考以下文章

PowerBI:数据表与多个事实表的关系

事实表,维度,度量,指标之间的关系

如何连接具有 1-N 关系的事实和维度表

SqlServer Analysis Service的事实维度关系

维度表和事实表的含义是啥?

数据仓库之维度建模篇