0
私はDimDate(年、月、日、四半期)の次元を持ち、この次元で相対年と相対月に対応する相対カレンダーを作成したいと考えています。 例: - Relative Yearメンバー:今年、今年 - 1 - 相対月メンバー:現在の月、現在の月-1、現在の月-2 ...キューブSSAS - 相対カレンダー
SSASでの操作方法は?
私はDimDate(年、月、日、四半期)の次元を持ち、この次元で相対年と相対月に対応する相対カレンダーを作成したいと考えています。 例: - Relative Yearメンバー:今年、今年 - 1 - 相対月メンバー:現在の月、現在の月-1、現在の月-2 ...キューブSSAS - 相対カレンダー
SSASでの操作方法は?
SQLスクリプトの下
を「相対期間寸法を」使用は相対的な期間のディメンション表とビューを作成します。 cubeScript列に提供さ
は、キューブスクリプトを追加し、 がデフォルトとして「現在のメンバー」を持つようにそれを設定し、 は非集計可能に設定し、それからディメンションを作成あなたのDSV、 に追加します(キューブの計算タブに移動します(ディメンションと階層名に合わせて変更する必要があります)
ディメンションはキューブに追加する必要がありますが、メジャーグループには関連付けられません。配線はキューブスクリプトで行います。
私は、デフォルトとプラス2つの相対的な期間計算の例を提供しましたが、これは必要に応じて簡単に拡張できます。 (例えば、前年度、前年度、前年度など)
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ですか?スタースキーマから構築されていますか?その場合、最初のタスクは、それを日付ディメンション表に追加することです –