如何在计算 mdx 中过滤求和函数集?
How to filter set on sum function in calculation mdx?
我想在ssas 中的olap cube 中进行计算。这将是 "avg sku by outlets".
有我的表情:
CREATE
MEMBER CURRENTCUBE.[Measures].[Avg Prod Art Id Distinct Count By OldcID] AS
Avg
(
Descendants
(
[dimOutlets].[OLDC ID].CurrentMember
,[dimOutlets].[OLDC ID].[OLDC ID]
)
,[Measures].[Prod Art Id Distinct Count]
);
它工作正常,但是当我试图向它添加一些逻辑时出现了问题。我想按状态或类型过滤一些文档。
这是我做的:
CREATE
MEMBER CURRENTCUBE.[Measures].[test Calculated Member] AS
Avg
(
NonEmpty
(
NonEmpty
(
{
[dimInvoice].[Doc Type].&[0]
,[dimInvoice].[Doc Type].&[1]
,[dimInvoice].[Doc Type].&[2]
,[dimInvoice].[Doc Type].&[3]
,[dimInvoice].[Doc Type].&[7]
,[dimInvoice].[Doc Type].[All].UnknownMember
}
,{
[dimInvoice].[Status].&[1]
,[dimInvoice].[Status].&[2]
,[dimInvoice].[Status].&[3]
,[dimInvoice].[Status].&[4]
,[dimInvoice].[Status].[All].UnknownMember
}
)
,Descendants
(
[dimOutlets].[OLDC ID].CurrentMember
,[dimOutlets].[OLDC ID].[OLDC ID]
)
)
,[Measures].[Prod Art Id Distinct Count]
) ;
当我在 visual studio 中尝试在浏览器上测试时,它考虑了很长时间,但我没有收到回复。
有没有最好和最快的方法来做到这一点?
PS。对不起我的英语。
也许将集合移到命名集合中:
CREATE
SET CURRENTCUBE.[DocTypes] AS
NonEmpty
(
NonEmpty
(
{
[dimInvoice].[Doc Type].&[0]
,[dimInvoice].[Doc Type].&[1]
,[dimInvoice].[Doc Type].&[2]
,[dimInvoice].[Doc Type].&[3]
,[dimInvoice].[Doc Type].&[7]
,[dimInvoice].[Doc Type].[All].UnknownMember
}
,{
[dimInvoice].[Status].&[1]
,[dimInvoice].[Status].&[2]
,[dimInvoice].[Status].&[3]
,[dimInvoice].[Status].&[4]
,[dimInvoice].[Status].[All].UnknownMember
}
)
,Descendants
(
[dimOutlets].[OLDC ID].CurrentMember
,[dimOutlets].[OLDC ID].[OLDC ID]
)
);
CREATE
MEMBER CURRENTCUBE.[Measures].[test Calculated Member] AS
Avg
(
[DocTypes]
,[Measures].[Prod Art Id Distinct Count]
) ;
这是可行的(感谢 whytheq),但速度很慢,现在我找到了更快地执行此操作的解决方案。想知道是否有可能对立方体进行测量?
CREATE DYNAMIC SET CURRENTCUBE.[DocTypesSet]
AS nonempty
(
{
[dimInvoice].[Doc Type].&[0]
,[dimInvoice].[Doc Type].&[1]
,[dimInvoice].[Doc Type].&[2]
,[dimInvoice].[Doc Type].&[3]
,[dimInvoice].[Doc Type].&[7]
,[dimInvoice].[Doc Type].[All].UnknownMember
}
*{
[dimInvoice].[Status].&[1]
,[dimInvoice].[Status].&[2]
,[dimInvoice].[Status].&[3]
,[dimInvoice].[Status].&[4]
,[dimInvoice].[Status].[All].UnknownMember
}
*Descendants
(
[dimOutlets].[OLDC ID].CurrentMember
,[dimOutlets].[OLDC ID].[OLDC ID]
)
)
CREATE MEMBER CURRENTCUBE.[Measures].[test msr]
AS Sum(DocTypesSet,[Measures].[Prod Art Id Distinct Count] )
我想在ssas 中的olap cube 中进行计算。这将是 "avg sku by outlets".
有我的表情:
CREATE
MEMBER CURRENTCUBE.[Measures].[Avg Prod Art Id Distinct Count By OldcID] AS
Avg
(
Descendants
(
[dimOutlets].[OLDC ID].CurrentMember
,[dimOutlets].[OLDC ID].[OLDC ID]
)
,[Measures].[Prod Art Id Distinct Count]
);
它工作正常,但是当我试图向它添加一些逻辑时出现了问题。我想按状态或类型过滤一些文档。
这是我做的:
CREATE
MEMBER CURRENTCUBE.[Measures].[test Calculated Member] AS
Avg
(
NonEmpty
(
NonEmpty
(
{
[dimInvoice].[Doc Type].&[0]
,[dimInvoice].[Doc Type].&[1]
,[dimInvoice].[Doc Type].&[2]
,[dimInvoice].[Doc Type].&[3]
,[dimInvoice].[Doc Type].&[7]
,[dimInvoice].[Doc Type].[All].UnknownMember
}
,{
[dimInvoice].[Status].&[1]
,[dimInvoice].[Status].&[2]
,[dimInvoice].[Status].&[3]
,[dimInvoice].[Status].&[4]
,[dimInvoice].[Status].[All].UnknownMember
}
)
,Descendants
(
[dimOutlets].[OLDC ID].CurrentMember
,[dimOutlets].[OLDC ID].[OLDC ID]
)
)
,[Measures].[Prod Art Id Distinct Count]
) ;
当我在 visual studio 中尝试在浏览器上测试时,它考虑了很长时间,但我没有收到回复。
有没有最好和最快的方法来做到这一点?
PS。对不起我的英语。
也许将集合移到命名集合中:
CREATE
SET CURRENTCUBE.[DocTypes] AS
NonEmpty
(
NonEmpty
(
{
[dimInvoice].[Doc Type].&[0]
,[dimInvoice].[Doc Type].&[1]
,[dimInvoice].[Doc Type].&[2]
,[dimInvoice].[Doc Type].&[3]
,[dimInvoice].[Doc Type].&[7]
,[dimInvoice].[Doc Type].[All].UnknownMember
}
,{
[dimInvoice].[Status].&[1]
,[dimInvoice].[Status].&[2]
,[dimInvoice].[Status].&[3]
,[dimInvoice].[Status].&[4]
,[dimInvoice].[Status].[All].UnknownMember
}
)
,Descendants
(
[dimOutlets].[OLDC ID].CurrentMember
,[dimOutlets].[OLDC ID].[OLDC ID]
)
);
CREATE
MEMBER CURRENTCUBE.[Measures].[test Calculated Member] AS
Avg
(
[DocTypes]
,[Measures].[Prod Art Id Distinct Count]
) ;
这是可行的(感谢 whytheq),但速度很慢,现在我找到了更快地执行此操作的解决方案。想知道是否有可能对立方体进行测量?
CREATE DYNAMIC SET CURRENTCUBE.[DocTypesSet]
AS nonempty
(
{
[dimInvoice].[Doc Type].&[0]
,[dimInvoice].[Doc Type].&[1]
,[dimInvoice].[Doc Type].&[2]
,[dimInvoice].[Doc Type].&[3]
,[dimInvoice].[Doc Type].&[7]
,[dimInvoice].[Doc Type].[All].UnknownMember
}
*{
[dimInvoice].[Status].&[1]
,[dimInvoice].[Status].&[2]
,[dimInvoice].[Status].&[3]
,[dimInvoice].[Status].&[4]
,[dimInvoice].[Status].[All].UnknownMember
}
*Descendants
(
[dimOutlets].[OLDC ID].CurrentMember
,[dimOutlets].[OLDC ID].[OLDC ID]
)
)
CREATE MEMBER CURRENTCUBE.[Measures].[test msr]
AS Sum(DocTypesSet,[Measures].[Prod Art Id Distinct Count] )