MDX 月初至今年初至今查询
MDX Month To Date Year To Date Query
我正在尝试构建一个查询,该查询将从多维数据集检索值,并根据当前日期构建一个月至今和年初至今的 SSRS 报告。我基本上是在尝试构建一个应该看起来像这样的报告...
Type Customer Product Group Quantity Shipped MTD Quantity Shipped YTD
=====================================================================
OE CompanyX Bikes 5 396
Helmets 10 254
CompanyY Repair Kits 93 653
T-shirts 38 564
Shoes 10 120
我真的为此苦苦挣扎,到目前为止,这就是我想出的...
WITH
MEMBER [Measures].[Quantity Shipped YTD] As Sum(YTD([Date].[Dates].CurrentMember),[Measures].[Quantity Shipped])
Member [Measures].[Quantity Shipped MTD] As Sum(MTD([Date].[Dates].CurrentMember),[Measures].[Quantity Shipped])
SELECT NON EMPTY { [Measures].[Quantity Shipped MTD], [Measures].[Quantity Shipped YTD] } ON COLUMNS,
NON EMPTY { ([Customer].[Business Type].[Business Type].ALLMEMBERS * [Customer].[Customer].[Customer].ALLMEMBERS * [Customer Sales].[Summary Prod Group 1].[Summary Prod Group 1].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM ( SELECT ( -{ [Customer Sales].[Summary Prod Group 1].&[Missing Product Group] } ) ON COLUMNS
FROM ( SELECT ( { [Customer].[Customer Code].&[2.254E3], [Customer].[Customer Code].&[2.063E3], [Customer].[Customer Code].&[2.183E3], [Customer].[Customer Code].&[2.261E3], [Customer].[Customer Code].&[5.3753E4], [Customer].[Customer Code].&[1.3084E5], [Customer].[Customer Code].&[1.37058E5] } ) ON COLUMNS
FROM ( SELECT ( { [Customer].[Business Type].&[OE] } ) ON COLUMNS
FROM ( SELECT ( [Date].[Day].&[Now()]) ON COLUMNS
FROM [Sales])))) WHERE ( [Customer].[Customer Code].CurrentMember )
CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
上面的查询没有检索到任何东西。我得到的只是一个空白的结果集。我需要完成更多的领域,但我假设如果我能将数量运送到工作中,我就能得到其他一切。请帮忙。发送
目前您没有任何日期 in context
这意味着 currentmember
不会找到太多 - 要有一个日期 in context
您需要添加一个实际的日期成员到您的 WHERE
或 SELECT
子句 - 而不是 subselect
.
的 SELECT
子句
Now()
是一个不常见的成员名称,因为它是一个 vba 函数,但如果这确实是名称,那么您可以将它移到 where 子句中:
WITH
MEMBER [Measures].[Quantity Shipped YTD] AS
Sum
(
YTD([Date].[Dates].CurrentMember)
,[Measures].[Quantity Shipped]
)
MEMBER [Measures].[Quantity Shipped MTD] AS
Sum
(
MTD([Date].[Dates].CurrentMember)
,[Measures].[Quantity Shipped]
)
SELECT
NON EMPTY
{
[Measures].[Quantity Shipped MTD]
,[Measures].[Quantity Shipped YTD]
} ON COLUMNS
,NON EMPTY
{
[Customer].[Business Type].[Business Type].ALLMEMBERS*
[Customer].[Customer].[Customer].ALLMEMBERS*
[Customer Sales].[Summary Prod Group 1].[Summary Prod Group 1].ALLMEMBERS
} ON ROWS
FROM
(
SELECT
{
[Customer].[Customer Code].&[2.254E3]
,[Customer].[Customer Code].&[2.063E3]
,[Customer].[Customer Code].&[2.183E3]
,[Customer].[Customer Code].&[2.261E3]
,[Customer].[Customer Code].&[5.3753E4]
,[Customer].[Customer Code].&[1.3084E5]
,[Customer].[Customer Code].&[1.37058E5]
} ON 0
,{[Customer].[Business Type].&[OE]} ON 1
,-
{
[Customer Sales].[Summary Prod Group 1].&[Missing Product Group]
} ON 2
FROM [Sales]
)
WHERE
[Date].[Day].&[Now()];
我怀疑这个 [Date].[Day].&[Now()];
不是成员的名字,而你正试图做一些动态的事情,在这种情况下你需要使用 strToMember
进行研究
我在 AdvWrks
立方体中构建了类似的东西:
WITH
MEMBER [Measures].[_YTD] AS
Aggregate
(
YTD([Date].[Calendar].CurrentMember)
,[Measures].[Order Quantity]
)
MEMBER [Measures].[_MTD] AS
Aggregate
(
MTD([Date].[Calendar].CurrentMember)
,[Measures].[Order Quantity]
)
SELECT
{
[Measures].[_YTD]
,[Measures].[_MTD]
} ON COLUMNS
,[Product].[Category].Children ON ROWS
FROM [Adventure Works]
WHERE
[Date].[Calendar].[Date].&[20050805];
它returns这个:
如果我想通过使用 vba 函数 now()
使上述动态化,那么这需要发生:
WITH
MEMBER [Measures].[Key for Today] AS
Format
(
Now()
,'yyyyMMdd'
)
MEMBER [Measures].[Today string] AS
'[Date].[Calendar].[Date].&[' + [Measures].[Key for Today] + ']'
MEMBER [Measures].[_YTD] AS
Aggregate
(
YTD([Date].[Calendar].CurrentMember)
,[Measures].[Order Quantity]
)
MEMBER [Measures].[_MTD] AS
Aggregate
(
MTD([Date].[Calendar].CurrentMember)
,[Measures].[Order Quantity]
)
SELECT
{
[Measures].[_YTD]
,[Measures].[_MTD]
} ON COLUMNS
,[Product].[Category].Children ON ROWS
FROM [Adventure Works]
WHERE
StrToMember
(
[Measures].[Today string]
,constrained
) ;
感谢 whytheq,这就是我想出的...
WITH
MEMBER [Measures].[Key for Today] AS
Format
(
Now()
,'yyyyMMdd'
)
MEMBER [Measures].[Today string] AS
'[Date].[Dates].[Day].&[' + [Measures].[Key for Today] + ']'
MEMBER [Measures].[Quantity Shipped MTD] AS
Sum
(
MTD([Date].[Dates].CurrentMember)
,[Measures].[Quantity Shipped]
)
MEMBER [Measures].[Quantity Shipped YTD] AS
Sum
(
YTD([Date].[Dates].CurrentMember)
,[Measures].[Quantity Shipped]
)
SELECT NON EMPTY
{
[Measures].[Quantity Shipped MTD],
[Measures].[Quantity Shipped YTD]
} ON COLUMNS, NON EMPTY
{
[Customer].[Business Type].[Business Type].ALLMEMBERS*
[Customer].[Customer].[Customer].ALLMEMBERS*
[Customer Sales].[Summary Prod Group 1].[Summary Prod Group 1].ALLMEMBERS} On Rows
From
(
SELECT
{
[Customer].[Customer Code].&[2.254E3]
,[Customer].[Customer Code].&[2.063E3]
,[Customer].[Customer Code].&[2.183E3]
,[Customer].[Customer Code].&[2.261E3]
,[Customer].[Customer Code].&[5.3753E4]
,[Customer].[Customer Code].&[1.3084E5]
,[Customer].[Customer Code].&[1.37058E5]
} ON 0
,{[Customer].[Business Type].&[OE]} ON 1
,-
{
[Customer Sales].[Summary Prod Group 1].&[Missing Product Group]
} ON 2
From [Sales])
Where
StrToMember
(
[Measures].[Today string]
,constrained
)
我正在尝试构建一个查询,该查询将从多维数据集检索值,并根据当前日期构建一个月至今和年初至今的 SSRS 报告。我基本上是在尝试构建一个应该看起来像这样的报告...
Type Customer Product Group Quantity Shipped MTD Quantity Shipped YTD
=====================================================================
OE CompanyX Bikes 5 396
Helmets 10 254
CompanyY Repair Kits 93 653
T-shirts 38 564
Shoes 10 120
我真的为此苦苦挣扎,到目前为止,这就是我想出的...
WITH
MEMBER [Measures].[Quantity Shipped YTD] As Sum(YTD([Date].[Dates].CurrentMember),[Measures].[Quantity Shipped])
Member [Measures].[Quantity Shipped MTD] As Sum(MTD([Date].[Dates].CurrentMember),[Measures].[Quantity Shipped])
SELECT NON EMPTY { [Measures].[Quantity Shipped MTD], [Measures].[Quantity Shipped YTD] } ON COLUMNS,
NON EMPTY { ([Customer].[Business Type].[Business Type].ALLMEMBERS * [Customer].[Customer].[Customer].ALLMEMBERS * [Customer Sales].[Summary Prod Group 1].[Summary Prod Group 1].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM ( SELECT ( -{ [Customer Sales].[Summary Prod Group 1].&[Missing Product Group] } ) ON COLUMNS
FROM ( SELECT ( { [Customer].[Customer Code].&[2.254E3], [Customer].[Customer Code].&[2.063E3], [Customer].[Customer Code].&[2.183E3], [Customer].[Customer Code].&[2.261E3], [Customer].[Customer Code].&[5.3753E4], [Customer].[Customer Code].&[1.3084E5], [Customer].[Customer Code].&[1.37058E5] } ) ON COLUMNS
FROM ( SELECT ( { [Customer].[Business Type].&[OE] } ) ON COLUMNS
FROM ( SELECT ( [Date].[Day].&[Now()]) ON COLUMNS
FROM [Sales])))) WHERE ( [Customer].[Customer Code].CurrentMember )
CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
上面的查询没有检索到任何东西。我得到的只是一个空白的结果集。我需要完成更多的领域,但我假设如果我能将数量运送到工作中,我就能得到其他一切。请帮忙。发送
目前您没有任何日期 in context
这意味着 currentmember
不会找到太多 - 要有一个日期 in context
您需要添加一个实际的日期成员到您的 WHERE
或 SELECT
子句 - 而不是 subselect
.
SELECT
子句
Now()
是一个不常见的成员名称,因为它是一个 vba 函数,但如果这确实是名称,那么您可以将它移到 where 子句中:
WITH
MEMBER [Measures].[Quantity Shipped YTD] AS
Sum
(
YTD([Date].[Dates].CurrentMember)
,[Measures].[Quantity Shipped]
)
MEMBER [Measures].[Quantity Shipped MTD] AS
Sum
(
MTD([Date].[Dates].CurrentMember)
,[Measures].[Quantity Shipped]
)
SELECT
NON EMPTY
{
[Measures].[Quantity Shipped MTD]
,[Measures].[Quantity Shipped YTD]
} ON COLUMNS
,NON EMPTY
{
[Customer].[Business Type].[Business Type].ALLMEMBERS*
[Customer].[Customer].[Customer].ALLMEMBERS*
[Customer Sales].[Summary Prod Group 1].[Summary Prod Group 1].ALLMEMBERS
} ON ROWS
FROM
(
SELECT
{
[Customer].[Customer Code].&[2.254E3]
,[Customer].[Customer Code].&[2.063E3]
,[Customer].[Customer Code].&[2.183E3]
,[Customer].[Customer Code].&[2.261E3]
,[Customer].[Customer Code].&[5.3753E4]
,[Customer].[Customer Code].&[1.3084E5]
,[Customer].[Customer Code].&[1.37058E5]
} ON 0
,{[Customer].[Business Type].&[OE]} ON 1
,-
{
[Customer Sales].[Summary Prod Group 1].&[Missing Product Group]
} ON 2
FROM [Sales]
)
WHERE
[Date].[Day].&[Now()];
我怀疑这个 [Date].[Day].&[Now()];
不是成员的名字,而你正试图做一些动态的事情,在这种情况下你需要使用 strToMember
我在 AdvWrks
立方体中构建了类似的东西:
WITH
MEMBER [Measures].[_YTD] AS
Aggregate
(
YTD([Date].[Calendar].CurrentMember)
,[Measures].[Order Quantity]
)
MEMBER [Measures].[_MTD] AS
Aggregate
(
MTD([Date].[Calendar].CurrentMember)
,[Measures].[Order Quantity]
)
SELECT
{
[Measures].[_YTD]
,[Measures].[_MTD]
} ON COLUMNS
,[Product].[Category].Children ON ROWS
FROM [Adventure Works]
WHERE
[Date].[Calendar].[Date].&[20050805];
它returns这个:
如果我想通过使用 vba 函数 now()
使上述动态化,那么这需要发生:
WITH
MEMBER [Measures].[Key for Today] AS
Format
(
Now()
,'yyyyMMdd'
)
MEMBER [Measures].[Today string] AS
'[Date].[Calendar].[Date].&[' + [Measures].[Key for Today] + ']'
MEMBER [Measures].[_YTD] AS
Aggregate
(
YTD([Date].[Calendar].CurrentMember)
,[Measures].[Order Quantity]
)
MEMBER [Measures].[_MTD] AS
Aggregate
(
MTD([Date].[Calendar].CurrentMember)
,[Measures].[Order Quantity]
)
SELECT
{
[Measures].[_YTD]
,[Measures].[_MTD]
} ON COLUMNS
,[Product].[Category].Children ON ROWS
FROM [Adventure Works]
WHERE
StrToMember
(
[Measures].[Today string]
,constrained
) ;
感谢 whytheq,这就是我想出的...
WITH
MEMBER [Measures].[Key for Today] AS
Format
(
Now()
,'yyyyMMdd'
)
MEMBER [Measures].[Today string] AS
'[Date].[Dates].[Day].&[' + [Measures].[Key for Today] + ']'
MEMBER [Measures].[Quantity Shipped MTD] AS
Sum
(
MTD([Date].[Dates].CurrentMember)
,[Measures].[Quantity Shipped]
)
MEMBER [Measures].[Quantity Shipped YTD] AS
Sum
(
YTD([Date].[Dates].CurrentMember)
,[Measures].[Quantity Shipped]
)
SELECT NON EMPTY
{
[Measures].[Quantity Shipped MTD],
[Measures].[Quantity Shipped YTD]
} ON COLUMNS, NON EMPTY
{
[Customer].[Business Type].[Business Type].ALLMEMBERS*
[Customer].[Customer].[Customer].ALLMEMBERS*
[Customer Sales].[Summary Prod Group 1].[Summary Prod Group 1].ALLMEMBERS} On Rows
From
(
SELECT
{
[Customer].[Customer Code].&[2.254E3]
,[Customer].[Customer Code].&[2.063E3]
,[Customer].[Customer Code].&[2.183E3]
,[Customer].[Customer Code].&[2.261E3]
,[Customer].[Customer Code].&[5.3753E4]
,[Customer].[Customer Code].&[1.3084E5]
,[Customer].[Customer Code].&[1.37058E5]
} ON 0
,{[Customer].[Business Type].&[OE]} ON 1
,-
{
[Customer Sales].[Summary Prod Group 1].&[Missing Product Group]
} ON 2
From [Sales])
Where
StrToMember
(
[Measures].[Today string]
,constrained
)