如何在立方体中多次过滤测量
How to filter measure multiple times in cube
我需要从我的多维数据集生成一份报告,如下所示。
(虚拟数据)
其中列出了产品类别中今天、本周、期间和年初至今的销售额和毛利。
我的立方体设置如下
日期维度
还有立方体本身
目前我还没有实现商品分类件
我正在为如何编写一个 MDX 查询而苦恼,该查询可以 return sales/gross 一天、然后一周等的利润。
我可以 return 像这样
SELECT {[Measures].[Gross Profit],[Measures].[Price]} ON COLUMNS
From [Cube]
WHERE [Date].[Date Key].[2015-04-22];
等等其他各种类型(周等),但我不确定如何将 where 过滤器应用于列本身而不是整个查询,或者这是否是正确的方法它和我应该进行多个 MDX 调用,然后我在将使用它的应用程序中编写这些调用。
谁能给我一个正确方向的指示?
编辑:似乎主要使用@Akshay Rane 描述的方法工作,但是我无法让我的措施之一起作用
MEMBER [This Week] as
(PeriodsToDate([Date].[Fiscal Week Date].[Fiscal Week],StrToMember('[Date].[Fiscal Week Date].[Date Key].&[' + '20140401' + ']'))
,[Measures].[Merchandise Gross Profit])
给我一个错误:
The function expects a string or numeric expression for the argument. A tuple set expression was used.
这里有任何指示吗?
如果您可以从同一用户层次结构中获取不同级别的日期,那么这样的事情是可能的:
SELECT
{
[Date].[Calendar].[Month].&[2006]&[7]
,[Date].[Calendar].[Date].&[20050220]
}
*
{
[Measures].[Order Quantity]
,[Measures].[Internet Sales Amount]
} ON COLUMNS
,{[Product].[Category].Children} ON ROWS
FROM [Adventure Works];
上面的结果是这样的:
您必须为要聚合数据的每个时间间隔创建单独的计算所得成员。
这可以在 [Adventure Works]
立方体中完成,如下所示。
WITH
MEMBER [Today] as
([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER)
MEMBER [Last Week] as
AGGREGATE (
{ [Date].[Date].CURRENTMEMBER.lag(6) : [Date].[Date].CURRENTMEMBER }
, [Measures].[Internet Sales Amount]
)
SELECT
{ [Today], [Last Week] } ON 0,
{ ([Product].[Product Categories].[Category], [Date].[Date].[Date]) } ON 1
FROM
(
/*FILTERING ON SPECIFIC DATE USING SUBCUBE*/
SELECT [Date].[Date].&[20070715] ON 0
FROM [Adventure Works]
)
我需要从我的多维数据集生成一份报告,如下所示。
其中列出了产品类别中今天、本周、期间和年初至今的销售额和毛利。
我的立方体设置如下
日期维度
还有立方体本身
目前我还没有实现商品分类件
我正在为如何编写一个 MDX 查询而苦恼,该查询可以 return sales/gross 一天、然后一周等的利润。
我可以 return 像这样
SELECT {[Measures].[Gross Profit],[Measures].[Price]} ON COLUMNS
From [Cube]
WHERE [Date].[Date Key].[2015-04-22];
等等其他各种类型(周等),但我不确定如何将 where 过滤器应用于列本身而不是整个查询,或者这是否是正确的方法它和我应该进行多个 MDX 调用,然后我在将使用它的应用程序中编写这些调用。
谁能给我一个正确方向的指示?
编辑:似乎主要使用@Akshay Rane 描述的方法工作,但是我无法让我的措施之一起作用
MEMBER [This Week] as
(PeriodsToDate([Date].[Fiscal Week Date].[Fiscal Week],StrToMember('[Date].[Fiscal Week Date].[Date Key].&[' + '20140401' + ']'))
,[Measures].[Merchandise Gross Profit])
给我一个错误:
The function expects a string or numeric expression for the argument. A tuple set expression was used.
这里有任何指示吗?
如果您可以从同一用户层次结构中获取不同级别的日期,那么这样的事情是可能的:
SELECT
{
[Date].[Calendar].[Month].&[2006]&[7]
,[Date].[Calendar].[Date].&[20050220]
}
*
{
[Measures].[Order Quantity]
,[Measures].[Internet Sales Amount]
} ON COLUMNS
,{[Product].[Category].Children} ON ROWS
FROM [Adventure Works];
上面的结果是这样的:
您必须为要聚合数据的每个时间间隔创建单独的计算所得成员。
这可以在 [Adventure Works]
立方体中完成,如下所示。
WITH
MEMBER [Today] as
([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER)
MEMBER [Last Week] as
AGGREGATE (
{ [Date].[Date].CURRENTMEMBER.lag(6) : [Date].[Date].CURRENTMEMBER }
, [Measures].[Internet Sales Amount]
)
SELECT
{ [Today], [Last Week] } ON 0,
{ ([Product].[Product Categories].[Category], [Date].[Date].[Date]) } ON 1
FROM
(
/*FILTERING ON SPECIFIC DATE USING SUBCUBE*/
SELECT [Date].[Date].&[20070715] ON 0
FROM [Adventure Works]
)