Для чего применяется writeback? И что такое writeback?
Кратко, writeback – это обратная запись. То есть, используя excel 2010(в принципе любой клиент, который поддерживает writeback) вы можете внести изменения в данные хранилища или измерения. Зачем это?
Данная опция нужна для создания “план-факт” анализа, бюджетирования, корректировки данных в измерениях. Рассмотрим небольшой проект план-факт и как раз на основе данного проекта я покажу работу с writeback. Источником данных возьмем AdventureWorks 2012. Плюс сделаем отдельную таблицу для плановых значений (она фактически копия таблицы FactFinance). Код для создания таблицы:
USE [AdventureWorksDW2012]
GO
/****** Object: Table [dbo].[PlanFinance] Script Date: 17.07.2012 13:10:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[PlanFinance](
[FinanceKey] [int] IDENTITY(1,1) NOT NULL,
[DateKey] [int] NOT NULL,
[OrganizationKey] [int] NOT NULL,
[DepartmentGroupKey] [int] NOT NULL,
[ScenarioKey] [int] NOT NULL,
[AccountKey] [int] NOT NULL,
[Amount] [float] NOT NULL,
[Date] [datetime] NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[PlanFinance] WITH CHECK ADD CONSTRAINT [FK_PlanFinance_DimAccount] FOREIGN KEY([AccountKey])
REFERENCES [dbo].[DimAccount] ([AccountKey])
GO
ALTER TABLE [dbo].[PlanFinance] CHECK CONSTRAINT [FK_PlanFinance_DimAccount]
GO
ALTER TABLE [dbo].[PlanFinance] WITH CHECK ADD CONSTRAINT [FK_PlanFinance_DimDate] FOREIGN KEY([DateKey])
REFERENCES [dbo].[DimDate] ([DateKey])
GO
ALTER TABLE [dbo].[PlanFinance] CHECK CONSTRAINT [FK_PlanFinance_DimDate]
GO
ALTER TABLE [dbo].[PlanFinance] WITH CHECK ADD CONSTRAINT [FK_PlanFinance_DimDepartmentGroup] FOREIGN KEY([DepartmentGroupKey])
REFERENCES [dbo].[DimDepartmentGroup] ([DepartmentGroupKey])
GO
ALTER TABLE [dbo].[PlanFinance] CHECK CONSTRAINT [FK_PlanFinance_DimDepartmentGroup]
GO
ALTER TABLE [dbo].[PlanFinance] WITH CHECK ADD CONSTRAINT [FK_PlanFinance_DimOrganization] FOREIGN KEY([OrganizationKey])
REFERENCES [dbo].[DimOrganization] ([OrganizationKey])
GO
ALTER TABLE [dbo].[PlanFinance] CHECK CONSTRAINT [FK_PlanFinance_DimOrganization]
GO
ALTER TABLE [dbo].[PlanFinance] WITH CHECK ADD CONSTRAINT [FK_PlanFinance_DimScenario] FOREIGN KEY([ScenarioKey])
REFERENCES [dbo].[DimScenario] ([ScenarioKey])
GO
ALTER TABLE [dbo].[PlanFinance] CHECK CONSTRAINT [FK_PlanFinance_DimScenario]
GO
В связи с тем, что для проектов я уже использую SQL 2012, то рассмотрим реализацию writebak, как в многомерной модели, так и в Tabular модели.
1 Многомерная модель
- Создаем многомерную модель в VS 2010 на основе таблиц FactFinance, PlanFinace (таблицы фактов), DimOrganisation, DimDepartamentGroup,DimDate

- Создаем 3 измерения Dim_Date, Dim_Departament, Dim_Organisation
- Создаем куб и 2 показателя. Один из таблицы FactFinance – Amount, где хранятся наши факты, функцию агрегации используем LastNonEmpty(так как это остатки), второй из таблицы PlanFinance- Amount, функцию агрегации делаем Sum. Название у показателей соответствующие - FactAmount и PlanAmount.
- Включаем writeback. Для этого переходим в раздел Partitions и правой кнопкой мышки нажимаем на партицию PlanFinance, в выпадающем меню выбираем writeback settings

- В появившемся окне вводим название таблицы, куда будут записываться изменения, источник данных и Storage Mode: Molap или Rolap. Я использую Molap.

- Нажимаем Ok и деплоем проект. В итоге в хранилище мы должны получить новую таблицу, в моем случае WriteTable_PlanFinance, в которую теперь будут записываться новые данные, а также логирование, когда была вставлена запись и кем.
И как обычно выкладываю проект, который вы может скачать здесь.
Во второй части, я расскажу реализацию writeback в Tabular модели SSAS
Комментариев нет:
Отправить комментарий