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

时间:2010-04-15 15:12:59

标签: sql ssas mdx

我正在基于SSAS 2005多维数据集在Reporting Services 2005中构建报表。该报告的基本思想是,他们希望看到本财年的销售额与去年的销售额相比。这听起来很简单,但由于这是我的第一份基于SSAS的“真实”报告,我有一段时间。

首先,如何计算当前会计年度,季度或月份。我有一个财政日期层次结构,其中包含所有信息,但我无法弄清楚如何说:“根据今天的日期,找到当前的会计年度,季度和月份。”

我的第二个,但稍微小一点的问题是,去年销售额与今年的销售量相比。我已经看到了很多关于如何做到这一点的例子,但他们都假设您手动选择日期。由于这是一份报告并且几乎可以自行运行,我需要一种方法将“当前”会计年度,季度和月份插入到PERIODSTODATE或PARALLELPERIOD函数中以获得我想要的。

所以,我乞求你的帮助。

4 个答案:

答案 0 :(得分:0)

您可能需要手动修改SSRS MDX才能执行此操作。可以让SSAS使用“今天”,它通常是这样的:

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


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

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

那么,假设您有会计年度,并且想要插入值,请修改以上内容以适应?把我喜欢的字符串放在一起,等同于你想要使用的值。听起来你好吗?

答案 1 :(得分:0)

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

e.g。

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

答案 2 :(得分:0)

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

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()))) + "]")
)

这有助于以后在查询中交叉加入。

答案 3 :(得分:0)

我们通过使用参数找到了一种简单的方法,可以通过mdx将财务期限计算到日期日期。想象一下,我们有BeginDate(01/04/2014)和EndDate(2015年3月31日)。这是配方师。点击参数" beginDate"在报告数据中 - 右键单击​​参数 - 指定值 - 添加表达式值:

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

对第二个参数&#34; EndDate&#34;执行相同的操作。并设置Defualt值 - 指定值并添加表达式值:

=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()))))

现在您的ssrs报告将会计期间作为默认期间。 Moise Kabongo