我无法让Analysis Services构建一个多维数据集,在该多维数据集中,较小粒度的维限制了较粗粒度的维的条目。
我认为我想做的是在https://docs.microsoft.com/de-de/sql/analysis-services/multidimensional-models-olap-logical-cube-objects/dimension-relationships?view=sql-server-2017上称为参考关系。
示例:我正在构建非常简单的客户-订单-订单明细-产品关系。我想要筛选“订单限制客户”。
数据库表设置尽可能简单
Customer (1 <-> N) Order (1 <-> N) OrderDetail (N <-> 1) Product
C_id O_id O_id P_id
name C_id P_id name
number amount price
我在SSAS中为客户(名称为显示,id为键),订单(数字为显示,id为键)和产品(名称为显示,id为键)设置了三个维度,没有其他层次结构在这些方面(尽可能简单)。
我用四个度量值组构建一个多维数据集,每个表一组,将过滤结果中的行数作为最基本的度量值。
我设法设置尺寸用法,以便对产品进行过滤会限制显示的订单,反之亦然,使用m:n关系设置对订单进行过滤只会选择相关产品。
我还设法将其扩展到客户:再次按照预期方式,仅对那些订单,明细和产品使用客户维度过滤器。我必须将订单表的外键“ C_id”添加为订单维度(1)中的另一个属性,以允许创建此维度使用设置。
现在,我无法完成的是另一个方向:按订单进行过滤只能返回该订单中的客户(当然,这仅仅是一个客户)。从“更远的地方”开始,按产品筛选,我应该只吸引在任何订单中都拥有该产品的客户。
我无法在客户度量组和订单维度的交集处为维度用法设置任何适当的选择。我必须使用哪种维数用法?我明确认为正确的一种是参考尺寸关系,如上面链接的文档中所述。
但是,如果尝试使用该错误,则会收到一个有点奇怪的错误:“(维或度量值组)的粒度必须大于或等于粒度(另一个维数或度量值组)。括号中的位我不确定它们很精确,但是我记得其中一个是orderdetails-measure组(与我建模的位置“相距甚远”,另一个是订单,我认为)。
为什么会出现此错误?我怀疑是因为我的订单维度(带有附加属性C_id,如(1)中所述)的设置不完全正确。我可能必须使用这两个属性进行更改才能使其正常工作,但我却无法做到(并且上面链接的文档未提及任何特殊要求)
如果有人可以提供这些信息,我将不胜感激。如果没有,我将在以后访问它时添加创建脚本,屏幕截图和完整的错误消息。
谢谢!