使用 MDX 从层次结构中获取当前会计年度

Posted

技术标签:

【中文标题】使用 MDX 从层次结构中获取当前会计年度【英文标题】:Obtaining Current Fiscal Year from Hierarchy with MDX 【发布时间】:2010-04-15 15:12:59 【问题描述】:

我正在 Reporting Services 2005 中基于 SSAS 2005 多维数据集构建报表。该报告的基本思想是,他们希望查看本财年迄今为止的销售额与去年迄今为止的销售额。这听起来很简单,但鉴于这是我第一份基于 SSAS 的“真实”报告,我过得很开心。

首先,如何计算当前的财政年度、季度或月份。我有一个包含所有信息的会计日期层次结构,但我不知道怎么说:“根据今天的日期,找到当前的会计年度、季度和月份。”

我的第二个但稍微小一点的问题是去年的销售额与今年的销售额。我已经看过很多关于如何执行此操作的示例,但它们都假设您手动选择日期。由于这是一份报告,并且几乎可以独立运行,因此我需要一种方法将“当前”财政年度、季度和月份插入 PERIODSTODATE 或 PARALLELPERIOD 函数以获得我想要的。

所以,我请求您在这方面提供帮助。

【问题讨论】:

【参考方案1】:

您可能需要手动修改 s-s-rS MDX 才能执行此操作。可以让 SSAS 使用“Today”,通常是这样完成的:

WITH 
MEMBER [Today]
 AS 
StrToMember("[Date].[Date Key].&[" + Format(now(), "yyyyMMdd") + "]")



SELECT
    [Measures].[Some Measure]
ON COLUMNS
FROM    
    [Cube]
WHERE
    [Today]

当然,您需要更改它以适应您自己的立方体结构。

那么,假设您有会计年度,并且您想插入值,修改以上内容以适应?像我向您展示的那样将一个字符串放在一起,该字符串等于您要使用的值。听起来你在那之后就没事了?

【讨论】:

【参考方案2】:

您应该能够使用各种功能来解决这个问题,这些功能可以告诉您“您在层次结构中的位置”

例如

http://www.sqldev.org/sql-server-analysis-services/find-parent-of-current-day-10080.shtml

【讨论】:

【参考方案3】:

我知道这“有点”太晚了,但对于到达此问题页面的人来说,这可能会有所帮助:

IIF(Month(Now()) > MonthOffSetNumber, Year(Now()) + 1,Year(Now())) 

这是为了获取当前会计年度。这将被应用在这样的地方:

SET CurrentFiscalYear AS 
(
    StrToSet("[Dim Date Name].[Fiscal Year].&[" + Format(IIF(Month(Now()) > MonthOffSetNumber, Year(Now()) + 1,Year(Now()))) + "]")
)

这将有助于以后在查询中进行交叉连接。

【讨论】:

【参考方案4】:

我们找到了一种简单的方法来使用参数在 mdx 中计算财政期间至今日期。假设我们有 BeginDate (01/04/2014) 和 EndDate (31/03/2015)。这里是公式。点击报表数据中的参数“beginDate”——右键参数——指定值——添加表达式值:

=DATEADD
("M"
,IIF(Month(Today())<4
 ,-Month(Today())-8
 ,-Month(Today())+4
 )
,DATEADD("D",0-DATEPART("D",Today())+1,Today()))

对第二个参数“EndDate”执行相同操作并设置默认值 - 指定值并添加表达式值:

=DATEADD("D",-1,DATEADD("M",12,DATEADD
("M"
,IIF(Month(Today())<4
 ,-Month(Today())-8
 ,-Month(Today())+4
 )
,DATEADD("D",0-DATEPART("D",Today())+1,Today()))))

现在您的 s-s-rs 报告将财政期间作为默认期间。 莫伊塞·卡邦戈

【讨论】:

以上是关于使用 MDX 从层次结构中获取当前会计年度的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 MDX 获取不可见属性和用户定义的层次结构的名称?

MDX 获取层次结构值

odoo 获取当前会计年度

MDX 从 2 年前开始销售到今天

SSAS MDX WHERE 子句语法 - 从同一层次结构中过滤多个值

具有多个属性层次结构的计算成员 - MDX