我对多对多维度很新,但我有一个解决方案,这引发了一些我无法解决的问题......所以你的帮助将受到高度赞赏!
场景是:
我在BIDS中建模了所有这些,在每个维度和事实之间设置维度用法,类别和交易表之间的多对多关系到位。换句话说,一切似乎都没问题。
我现在需要编写一个MDX,我将用它来创建一个显示类似内容的报告:
Lev1 Lev2 Lev3 Prod Count
-A
-AA 6
-AA 2
P6 1
P5 1
-AAA 2
P1 1
P2 1
-AAB 2
P3 1
P4 1
+BB
以下MDX几乎可以返回我需要的内容:
SELECT
[Measures].[SALES Count] ON COLUMNS,
NONEMPTYCROSSJOIN(
DESCENDANTS([Category].[PARENTCATEGORY].[Level 01].MEMBERS),
[Product].[Prod KEY].[Prod KEY].MEMBERS,
[Measures].[Measures].[Bridge Distinct Count],
[Measures].[SALES Count],
2) ON ROWS
FROM [Sales]
我遇到的问题是,对于每个非叶子类别,交叉连接返回与为其销售的每个产品+所有子类别的有效交集。因此,结果集包含太多冗余数据,而且我找不到过滤掉SSRS报告本身冗余的方法。
有关如何重写MDX以便它只返回上面的结果集的想法吗?
另一个问题是,如果我创建一个角色扮演类别维度,我设置为直接切片事务数据,那么我在浏览多维数据集时得到的数字完全关闭......似乎SSAS在处理过程中正在做某事(但它不是它向OLTP发出的SQL语句,因为它们仍然完全相同)导致问题,但我不知道是什么。有什么想法吗?
干杯, 亚历
答案 0 :(得分:0)
我想我找到了问题的解决方案,使用以下查询:
WITH
MEMBER [Measures].[Visible] AS
IsLeaf([DIM Eco Res Category].[PARENTCATEGORY].CurrentMember)
MEMBER [Measures].[CurrentProd] AS
IIF
(
[Measures].[Visible]
,[DIM Eco Res Product].[Prod KEY].CurrentMember.Name
,""
)
SELECT
{
[Measures].[Visible]
,[Measures].[CurrentProd]
,[Measures].[FACT PRODSALES Count]
} ON COLUMNS
,NonEmptyCrossJoin
(
Descendants
(
[DIM Eco Res Product].[Prod KEY].[(All)],
,Leaves
)
,Descendants([DIM Eco Res Category].[PARENTCATEGORY].[(All)])
,[Measures].[FACT PRODSALES Count]
,2
)
DIMENSION PROPERTIES
MEMBER_CAPTION
,MEMBER_UNIQUE_NAME
,PARENT_UNIQUE_NAME
,LEVEL_NUMBER
ON ROWS
FROM [Sales];
在报告中,我使用[Measures]。[CurrentProd]作为产品列的来源,到目前为止似乎工作正常。