我创建了一个立方体。除了时间维度,我设置的一切都很好。我需要按照财政年度日历。因为,我正在研究产品,因此没有固定的会计年度格式,我无法使用服务器/数据源方法创建Time
维度表。在设计时。
我有一个表格,其中的格式是会计年度。如下所示,
StartDM EndDM Year
04-01 03-31 2014
因此,我需要使用财政年度的上述格式作为维度。我搜索了很多,以找到实现功能的方法。专家帮助我为这个问题提供更好的解决方案。我会感激你的。
由于
答案 0 :(得分:0)
使用多对多技术可能有助于解决它。
我们需要几个额外的项目:
SQL部分
1)1月至12月成员的平面维度,这将是会计年度的第一个月。
create view vwDynamicFYStartMonth
as
SELECT 1 AS FYM_ID, 'Jan' AS FYMonth UNION ALL
SELECT 2, 'Feb' UNION ALL
SELECT 3, 'Mar' UNION ALL
SELECT 4, 'Apr' UNION ALL
SELECT 5, 'May' UNION ALL
SELECT 6, 'Jun' UNION ALL
SELECT 7, 'Jul' UNION ALL
SELECT 8, 'Aug' UNION ALL
SELECT 9, 'Sep' UNION ALL
SELECT 10, 'Oct' UNION ALL
SELECT 11, 'Nov' UNION ALL
SELECT 12, 'Dec'
2)桥梁测量组根据所选的开始月份具有任意日期组合。
3)等级维度:会计年度/月/日
为了简化解决方案,我们将对它们使用相同的视图:
create view vwBridge_M2M_DynamicFYStartMonth
as
select YMD,FYM_ID,FYMonth
,case when YMD/100%100>=FYM_ID and FYM_ID!=1 then YMD+10000 else YMD end as FYMD
,case when YMD/100%100>=FYM_ID and FYM_ID!=1 then (YMD+10000)/100 else YMD/100 end as FYM
,case when YMD/100%100>=FYM_ID and FYM_ID!=1 then (YMD+10000)/10000 else YMD/10000 end as FY
from
(select REPORT_DATE_ID as YMD from Data
group by REPORT_DATE_ID) a
cross join vwDynamicFYStartMonth b
Data.REPORT_DATE_ID
- 我们约会的所有可能值。这应该是日期维度的日期级别字段。
所以我们有这样的感觉:
其中YMD
- 是真实日期,FYM_ID
- 是开始会计年度的所有可能月份,FYMD, FYM, FY
- FY日期维度的级别
SSAS DSV部分
我们需要将所有新项目添加到数据源视图中,如下所示:
DimReportDateFYChoise
是查看vwDynamicFYStartMonth
BridgeReportDateFY
来自YMD, FYM_ID, FYMD
vwBridge_M2M_DynamicFYStartMonth
个字段
DimReportDateFY
来自FYMD, FYM, FY
vwBridge_M2M_DynamicFYStartMonth
个字段
SSAS维度部分
使用成员列表在DimReportDateFYChoise
上创建简单的平面维度(通过设置IsAggregatable = False
并将默认成员设置为Jan
或其他任何内容,也可以删除所有级别)
使用DimReportDateFY
创建分层日期维度。
SSAS多维数据集设计部分
通过BridgeReportDateFY添加中间度量值组(使用一个计数度量)
将以前创建的两个尺寸添加到多维数据集和链接尺寸,如下面的屏幕所示:
首先链接到事实表的真实维度键(Report_Date_ID)。
通过使用多对多关系,向您的真实度量值组添加新的FY维度。
MDX查询
我使用此查询进行测试
select [Report Date FY].[Report Date FY].[Month].Allmembers on 1
,[Report Date].[Report Date].[Month].Allmembers on 0
from
[DATA]
where ([Report Date FY Choise].[FYM ID].&[1],[Measures].[Count])
与使用&[1]
(1月份)相比,4
是4月,12
是12月。
最终结果
1月份显然是一样的:
四月将一些成员带到下一年:
最后,9月到明年只移动了当年的最后4名成员:
祝你好运!
(由于如此小的错误修复而更新)