我陷入了一个有趣的问题。我有一个名为Product的维度,层次结构为Product Rolodex1-> Rolodex2-> Rolodex3->产品ID 。
我正在尝试创建计算度量[产品数量]来计算"产品ID"成员(最低级别)正在选择中。
我的衡量标准如下:
MEMBER [Measures].[Product Count] AS
COUNT(
FILTER(
EXISTING [Product].[Product].[Product ID].MEMBERS
, NOT ISEMPTY( [Measures].[Distinct Product Count] ) ))
)
[Distinct Product Count]是产品ID的独特计数。选择中现有的产品ID应为1。
当我从同一级别选择2个成员并将它们组合在一起并放入条件时,该措施有效。例如,它适用于以下查询:
WITH
MEMBER [Product].[Product].[All Products].[Aggregation] AS
' AGGREGATE(
{ [Product].[Product].[Rolodex1].&[44],
[Product].[Product].[Rolodex1].&[45] }
) '
SELECT
{ [Measures].[Product Count] } ON COLUMNS ,
{ [Paid Date].[Paid Date].[Paid Quarters].&[2016 - Q2]
,[Paid Date].[Paid Date].[Paid Quarters].&[2016 - Q3] } ON ROWS
FROM [MyCube]
WHERE ( [Product].[Product].[All Products].[Aggregation] )
但是当选择并组合2个不同级别的成员时,它无法使用以下查询:
WITH
MEMBER [Product].[Product].[All Products].[Aggregation1] AS
' AGGREGATE(
GENERATE(
FILTER(
{ [Product].[Product].[Rolodex1].&[44],
[Product].[Product].[Rolodex2].&[4505] }
, NOT ISEMPTY(
[Product].[Product].CURRENTMEMBER
)
),
HEAD(
HIERARCHIZE(
INTERSECT(
{ [Product].[Product].[Rolodex1].&[44]
, [Product].[Product].[Rolodex2].&[4505] }
,ASCENDANTS( [Product].[Product].CURRENTMEMBER )
)
)
)
)
) '
SELECT
{ [Measures].[Product Count] } ON COLUMNS ,
{
[Paid Date].[Paid Date].[Paid Quarters].&[2016 - Q2]
,[Paid Date].[Paid Date].[Paid Quarters].&[2016 - Q3] } ON ROWS
FROM [Cost and Utilization]
WHERE ( [Product].[Product].[All Products].[Aggregation1] )
此处生成的计算成员的MDX [产品]。[产品]。[所有产品]。[聚合1]是当我从不同级别选择2个成员并组合在一起时由Proclarity生成的查询。
请帮忙。有没有人以前遇到过这个问题?
提前谢谢。
答案 0 :(得分:0)
最初的建议是使用以下更有效的模式进行衡量:
MEMBER [Measures].[Product Count] AS
SUM(
EXISTING [Product].[Product].[Product ID].MEMBERS
IIF (
NOT ISEMPTY( [Measures].[Distinct Product Count] )
,1
,NULL
)
)
Proclarity脚本的替代方法可能如下 - 这是否会返回您期望的结果?
WITH
MEMBER [Product].[Product].[All Products].[Aggregation1] AS
' AGGREGATE(
EXISTS(
[Product].[Product].[Product ID].MEMBERS
,{ [Product].[Product].[Rolodex1].&[44]
, [Product].[Product].[Rolodex2].&[4505] }
)
) '
SELECT
{ [Measures].[Product Count] } ON COLUMNS ,
{
[Paid Date].[Paid Date].[Paid Quarters].&[2016 - Q2]
,[Paid Date].[Paid Date].[Paid Quarters].&[2016 - Q3] } ON ROWS
FROM [Cost and Utilization]
WHERE ( [Product].[Product].[All Products].[Aggregation1] )
答案 1 :(得分:0)
通过使用动态集来保存产品ID以解决问题。如果有人需要具体答案,请告诉我。我会提供所有细节。谢谢。