MDX YTD 计算量度
MDX YTD calculated measure
我对 MDX 还是个新手,我正在尝试让一些基本函数在我的 SSAS 多维数据集中工作。你们能指出我在这里做错了什么吗?我使用以下代码向我的多维数据集添加了一个计算度量:
CREATE MEMBER CURRENTCUBE.[Measures].[Amount YTD]
AS
AGGREGATE(
YTD([OrderDate].[Calendar].CurrentMember)
,[Measures].[Amount]),
VISIBLE = 1, ASSOCIATED_MEASURE_GROUP = 'MyMeasureGroup';
之后,我正在尝试获取一些数据...
SELECT
NON EMPTY
{
[Measures].[Amount]
, [Measures].[Amount YTD]
} ON COLUMNS,
NON EMPTY
{
[OrderDate].[Month].ALLMEMBERS *
[Product].[Product Group].ALLMEMBERS
} ON ROWS
FROM (SELECT ([OrderDate].[Year].&[2014-01-01T00:00:00]:
[OrderDate].[Year].&[2015-01-01T00:00:00]) ON COLUMNS
FROM [SalesOrderIntake])
这是我得到的输出:
我在输出消息中没有看到任何错误,这让我很难弄清楚发生了什么。希望你们能帮我解决这个问题。
仅供参考:实际的 select 仅用于测试目的。我只想获得 YTD 运行。我已经尝试了几件事,但结果总是空的,所以如果我直接在 SSMS 中查询它而不是使用 BI 工具,我希望能得到一些实际的错误。此外,OrderDate 维度是生成的时间维度,由 VS 提供给我。
在您的查询中,您正在使用看起来像 属性 层次结构的内容:
[OrderDate].[Month].ALLMEMBERS
而该度量使用 用户 层次结构:
[OrderDate].[Calendar]
如果您在脚本中使用日历,它可以正常工作吗?
#Error
通常在 MDX
代码中存在 运行 时间错误时出现。我可以想到错误可能突然出现的一种情况。您正在计算成员中使用 [OrderDate].[Calendar].CurrentMember
。但是,如果范围内的该层次结构中有多个成员而不是一个,则会引发错误。
下面是来自 Adventure Works 的场景。
with member abc as
sum(YTD([Date].[Calendar].currentmember), [Measures].[Internet Sales Amount])
select abc on 0
from [Adventure Works]
where {[Date].[Calendar].[Date].&[20060115], [Date].[Calendar].[Date].&[20060315]}
P.S。感谢@whytheq 教我通过双击单元格来检查此错误的技巧:)干杯。
我知道,它是旧的 post,但为了 posterity..
正确的做法是:
Aggregate
(
PeriodsToDate
(
[OrderDate].[Calendar].[Fiscal Year]
,[OrderDate].[Calendar].CurrentMember
)
,[Measures].[Amount]
)
我对 MDX 还是个新手,我正在尝试让一些基本函数在我的 SSAS 多维数据集中工作。你们能指出我在这里做错了什么吗?我使用以下代码向我的多维数据集添加了一个计算度量:
CREATE MEMBER CURRENTCUBE.[Measures].[Amount YTD]
AS
AGGREGATE(
YTD([OrderDate].[Calendar].CurrentMember)
,[Measures].[Amount]),
VISIBLE = 1, ASSOCIATED_MEASURE_GROUP = 'MyMeasureGroup';
之后,我正在尝试获取一些数据...
SELECT
NON EMPTY
{
[Measures].[Amount]
, [Measures].[Amount YTD]
} ON COLUMNS,
NON EMPTY
{
[OrderDate].[Month].ALLMEMBERS *
[Product].[Product Group].ALLMEMBERS
} ON ROWS
FROM (SELECT ([OrderDate].[Year].&[2014-01-01T00:00:00]:
[OrderDate].[Year].&[2015-01-01T00:00:00]) ON COLUMNS
FROM [SalesOrderIntake])
这是我得到的输出:
我在输出消息中没有看到任何错误,这让我很难弄清楚发生了什么。希望你们能帮我解决这个问题。
仅供参考:实际的 select 仅用于测试目的。我只想获得 YTD 运行。我已经尝试了几件事,但结果总是空的,所以如果我直接在 SSMS 中查询它而不是使用 BI 工具,我希望能得到一些实际的错误。此外,OrderDate 维度是生成的时间维度,由 VS 提供给我。
在您的查询中,您正在使用看起来像 属性 层次结构的内容:
[OrderDate].[Month].ALLMEMBERS
而该度量使用 用户 层次结构:
[OrderDate].[Calendar]
如果您在脚本中使用日历,它可以正常工作吗?
#Error
通常在 MDX
代码中存在 运行 时间错误时出现。我可以想到错误可能突然出现的一种情况。您正在计算成员中使用 [OrderDate].[Calendar].CurrentMember
。但是,如果范围内的该层次结构中有多个成员而不是一个,则会引发错误。
下面是来自 Adventure Works 的场景。
with member abc as
sum(YTD([Date].[Calendar].currentmember), [Measures].[Internet Sales Amount])
select abc on 0
from [Adventure Works]
where {[Date].[Calendar].[Date].&[20060115], [Date].[Calendar].[Date].&[20060315]}
P.S。感谢@whytheq 教我通过双击单元格来检查此错误的技巧:)干杯。
我知道,它是旧的 post,但为了 posterity..
正确的做法是:
Aggregate
(
PeriodsToDate
(
[OrderDate].[Calendar].[Fiscal Year]
,[OrderDate].[Calendar].CurrentMember
)
,[Measures].[Amount]
)