具有命名集的MDX计算成员

具有命名集的MDX计算成员,mdx,olap-cube,Mdx,Olap Cube,我有一个名为CWTD(本周至今)Sales的计算成员,要使其工作,我需要昨天通过一个命名集 是否可以将命名集包含到计算成员中,这样我就不必在select语句中传递命名集 我之所以这样问,是因为Power View没有在字段列表中显示命名集 例如: WITH MEMBER [Measures].[CWTD Sales Test] AS Sum( PeriodsToDate( [Date].[NZLC Date].[NZLC Week],

我有一个名为CWTD(本周至今)Sales的计算成员,要使其工作,我需要昨天通过一个命名集

是否可以将命名集包含到计算成员中,这样我就不必在select语句中传递命名集

我之所以这样问,是因为Power View没有在字段列表中显示命名集

例如:

WITH MEMBER [Measures].[CWTD Sales Test]
 AS Sum(
            PeriodsToDate(
                [Date].[NZLC Date].[NZLC Week],
                [Date].[NZLC Date].CurrentMember
            ),  
            [Measures].[Net Sales - Gross for IK]
        )
select 
  [Measures].[CWTD Sales Test] on columns,
  NON EMPTY [Product].[Product].[Product Group] on rows
from [Daily Sales]
where 
  Tail(NonEmpty([Date].[NZLC Date].[Day].MEMBERS,[Measures].[Gross Sales]),1)

我是否可以将where部分包含到我的计算成员中?

由于where标准表示有任何数据的总销售额的最后一天,您只需使用该元组而不是。CurrentMember:

WITH MEMBER [Measures].[CWTD Sales Test]
 AS Sum(
            PeriodsToDate(
                [Date].[NZLC Date].[NZLC Week],
                Tail(NonEmpty([Date].[NZLC Date].[Day].MEMBERS,[Measures].[Gross Sales])).ITEM(0)
            ),  
            [Measures].[Net Sales - Gross for IK]
        )
select 
  [Measures].[CWTD Sales Test] on columns,
  NON EMPTY [Product].[Product].[Product Group] on rows
from [Daily Sales]

由于WHERE条件表示有任何数据的总销售额的最后一天,因此您只需使用该元组,而不是。CurrentMember:

WITH MEMBER [Measures].[CWTD Sales Test]
 AS Sum(
            PeriodsToDate(
                [Date].[NZLC Date].[NZLC Week],
                Tail(NonEmpty([Date].[NZLC Date].[Day].MEMBERS,[Measures].[Gross Sales])).ITEM(0)
            ),  
            [Measures].[Net Sales - Gross for IK]
        )
select 
  [Measures].[CWTD Sales Test] on columns,
  NON EMPTY [Product].[Product].[Product Group] on rows
from [Daily Sales]

@Dan已经回答了你的问题,但作为替代:

WITH 
SET [Yesterday] AS
  Tail(
    NonEmpty(
      [Date].[NZLC Date].[Day].MEMBERS
     ,[Measures].[Gross Sales]
    )
  )
MEMBER [Measures].[CWTD Sales Test] AS
  SUM(
    WTD([Yesterday].ITEM(0).ITEM(0))  
     ,[Measures].[Net Sales - Gross for IK]
  )
SELECT 
  [Measures].[CWTD Sales Test] ON 0,
  NON EMPTY [Product].[Product].[Product Group] ON 1
FROM [Daily Sales];

@Dan已经回答了你的问题,但作为替代:

WITH 
SET [Yesterday] AS
  Tail(
    NonEmpty(
      [Date].[NZLC Date].[Day].MEMBERS
     ,[Measures].[Gross Sales]
    )
  )
MEMBER [Measures].[CWTD Sales Test] AS
  SUM(
    WTD([Yesterday].ITEM(0).ITEM(0))  
     ,[Measures].[Net Sales - Gross for IK]
  )
SELECT 
  [Measures].[CWTD Sales Test] ON 0,
  NON EMPTY [Product].[Product].[Product Group] ON 1
FROM [Daily Sales];

Tail(非空([Date].[NZLC Date].[Day]。成员,[Measures].[Gross Sales]),1)
返回1天,但您的计算成员是本周迄今为止的成员。。。。那么脚本中的
WHERE
子句有什么意义呢?为什么您不能删除
WHERE
子句?此
Tail(非空([Date].[NZLC Date].[Day]。成员,[Measures].[Gross Sales]),1)
返回1天,但您的计算成员是当前一周的日期。。。。那么脚本中的
WHERE
子句有什么意义呢?为什么不能删除
WHERE
子句?您忘了给
TAIL
函数第二个参数。@whytheq,谢谢您的帖子。我昨天已经有了一个命名集,但命名集在Power View中不可见。我想在Dan所做的计算成员中包含名称集。但这是对函数PeriodToDate的抱怨。您忘了给
TAIL
函数第二个参数。@whytheq,谢谢您的帖子。我昨天已经有了一个命名集,但命名集在Power View中不可见。我想在Dan所做的计算成员中包含名称集。但这是对函数PeriodToDate的抱怨。谢谢。您的查询返回以下错误:CellOrdinal 0值#错误查询(3,13)PERIODSTODATE函数要求2参数使用成员表达式。使用了元组集表达式。格式化的_值#错误查询(3,13)PERIODSTODATE函数要求2参数使用成员表达式。使用了元组集表达式。请尝试将
TAIL(…,1)
更改为
TAIL(…)。项目(0)
,如我的示例所示。非常感谢您的帮助。我和另外一个有计划的成员有问题。我正在尝试创建一个返回最近13周滚动销售的计算,代码如下:以成员[Measures].[Rolling Last 13周销售]作为头(尾(非空([Date].[NZLC Date].[NZLC Week]。成员[Measures].[Gross Sales]),14),13)我得到以下错误:VALUE#error函数要求参数使用字符串或数值表达式。使用了元组集表达式。谢谢。您的查询返回以下错误:CellOrdinal 0值#错误查询(3,13)PERIODSTODATE函数要求2参数使用成员表达式。使用了元组集表达式。格式化的_值#错误查询(3,13)PERIODSTODATE函数要求2参数使用成员表达式。使用了元组集表达式。请尝试将
TAIL(…,1)
更改为
TAIL(…)。项目(0)
,如我的示例所示。非常感谢您的帮助。我和另外一个有计划的成员有问题。我正在尝试创建一个返回最近13周滚动销售的计算,代码如下:以成员[Measures].[Rolling Last 13周销售]作为头(尾(非空([Date].[NZLC Date].[NZLC Week]。成员[Measures].[Gross Sales]),14),13)我得到以下错误:VALUE#error函数要求参数使用字符串或数值表达式。使用了元组集表达式。