如何让 MDX openingperiod() 在 ssas 多维数据集中作为计算度量工作

How to get MDX openingperiod() to work as calculated measure in ssas cube

我想在我们的多维数据集中使用 MDX 函数 openingperiod() 和 closingperiod(),但无法使其正常工作。

这是否真的可行,或者这些函数是否仅适用于 MDX 查询?

我用来学习openingperiod()的主要两篇文章是: https://www.sqlservercentral.com/steps/stairway-to-mdx-level-12-mdx-timedate-series-functions-openingperiod-and-closingperiod-functions

https://docs.microsoft.com/en-us/sql/mdx/openingperiod-mdx?view=sql-server-2017

上面文档中openingperiod()和closingperiod()这两个函数只在查询中使用,但我想将它们集成到cube中。

我用作常规查询的代码是:

sum(
openingperiod
    (
    [Date Booking].[Year Month],
    [Date Booking].[Year Month].currentmember
    ),
    [Measures].[Goods Amount])

结果应该是月初的货量,结果是NULL.

我使用 sum 获得指向正确成员的有效语法。

我将尝试从 Adventure Works 示例数据库中为您提供想法。

这应该是在多维数据集中创建计算成员的语法([Adventure Works] 是此示例中的多维数据集名称),因此您可以稍后调用它:

create member [Adventure Works].Measures.MyMeasure4
as
(OpeningPeriod([Date].[Calendar].[Date],[Date].[Calendar].Currentmember.Parent), [Measures].[Internet Sales Amount]) 

然后你应该这样调用它以查看结果:

select {Measures.MyMeasure4, [Measures].[Internet Sales Amount]} on 0,
[Date].[Calendar].members on 1
from [Adventure Works]

因此,对于 1 月,MyMeasure4 将具有 1 月 1 日成员的值(开放期间的值),对于 2 月,它将具有从 2 月 1 日开始的值,如果这是您的意图的话。