0
我有一個維度DimDate(年,月,日,季度),在這個維度上,我想創建一個相對年份和相對月份的相對日曆。 例如: - 相對年份我想有一個會員:當前年份,當前年份-1 - 相對月份我想有一個會員:當前月份,當前月份-1,當前月份-2 ...多維數據集SSAS - 相對日曆
如何在SSAS中做到這一點?
我有一個維度DimDate(年,月,日,季度),在這個維度上,我想創建一個相對年份和相對月份的相對日曆。 例如: - 相對年份我想有一個會員:當前年份,當前年份-1 - 相對月份我想有一個會員:當前月份,當前月份-1,當前月份-2 ...多維數據集SSAS - 相對日曆
如何在SSAS中做到這一點?
使用「相對週期尺寸」
下面的SQL腳本將創建一個相對週期維度表和視圖。
將它添加到您的DSV, 創建它的尺寸, 設置有「當前成員」作爲默認, 將其設置爲不可聚合, 添加多維數據集腳本(cubeScript列提供在表格中爲了方便起見)插入到多維數據集中的計算選項卡中(您可能需要將其更改爲適合您的維度和層次結構名稱)
然後應將該維度添加到多維數據集,但不綁定到任何度量值組。接線由多維數據集腳本完成。
我已經提供了默認加兩個相對週期計算的例子,但可以根據需要輕鬆擴展。 (例如去年同期,前一年,前四周等)
CREATE TABLE [dbo].[DimRelativePeriod](
[relativePeriodKey] [smallint] IDENTITY(1,1) NOT NULL,
[relativePeriodCode] [varchar](10) NOT NULL,
[relativePeriod] [varchar](50) NOT NULL,
[relativePeriodSortOrder] [smallint] NOT NULL CONSTRAINT [DF_dimRelativePeriod_relativePeriodSortOrder] DEFAULT ((1)),
[cubeScript] [varchar](max) NULL,
[sqlScript] [varchar](max) NULL,
CONSTRAINT [PK_dimRelativePeriod] PRIMARY KEY CLUSTERED
(
[relativePeriodKey] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
CREATE view [dbo].[vwDimRelativePeriod]
as
select
relativePeriodKey,
relativePeriodCode,
relativePeriod,
relativePeriodSortOrder
from
[dbo].[DimRelativePeriod]
GO
SET IDENTITY_INSERT [dbo].[DimRelativePeriod] ON
GO
INSERT [dbo].[DimRelativePeriod] ([relativePeriodKey], [relativePeriodCode], [relativePeriod], [relativePeriodSortOrder], [cubeScript], [sqlScript]) VALUES (1, N'CUR', N'Current Period', 1, NULL, NULL)
GO
INSERT [dbo].[DimRelativePeriod] ([relativePeriodKey], [relativePeriodCode], [relativePeriod], [relativePeriodSortOrder], [cubeScript], [sqlScript]) VALUES (2, N'YTD', N'Year to Date', 2, N'SCOPE ([Relative Period].[Relative Period].&[YTD]);
THIS=
iif([Date].[Calendar].currentmember.level.name = "Month",
aggregate(
[Date].[Fiscal].CURRENTMEMBER.parent.parent.firstchild.firstchild:
[Date].[Fiscal].CURRENTMEMBER*[Relative Period].[Relative Period].&[CUR]),''N/A'')
);
END SCOPE;', NULL)
GO
INSERT [dbo].[DimRelativePeriod] ([relativePeriodKey], [relativePeriodCode], [relativePeriod], [relativePeriodSortOrder], [cubeScript], [sqlScript]) VALUES (3, N'LTD', N'Life to Date', 3, N'SCOPE ([Relative Period].[Relative Period].&[LTD]);
THIS=
aggregate(null:[Date].[Fiscal].CURRENTMEMBER*[Relative Period].[Relative Period].&[CUR]);
END SCOPE;', NULL)
GO
SET IDENTITY_INSERT [dbo].[DimRelativePeriod] OFF
GO
這是dax還是mdx?如果你真的想要這些代碼,這是非常不同的。爲層次結構的每個級別創建一個計算列,然後自行構建層次結構 – Matt
是 - 它是SSAS表格還是olap?它是由星型模式構建的嗎?如果是這樣,你的第一個任務是將它添加到你的日期維度表 –