понедельник, 25 февраля 2013 г.

Мартовская встреча Donetsk SQL Server User Group

 

Новая встреча нашей группы.  В гости приезжает Костя Хомяков с докладами:

1. Обработка данных в формате CSV используя только возможности SSIS (от простого к сложному)
2. Обработка данных в формате XML используя только возможности SSIS

и я выступлю с докладом:

"Если запрос тормозит, что делать? План выполнения запроса".

Приглашаем всех желающих, только большая просьба зарегистрироваться на встречу  в группе на facebook     или на портале Ineta, потому что  количество мест в аудитории ограничено. Ждем всех на новой встрече группы.

 

secondmeeting

пятница, 8 февраля 2013 г.

Отчет о первой встрече Donetsk Sql Server User Group


Наконец-то, я добрался до блога.  Эти две недели прошли в режиме “аврала”.  Так вот  первая встреча  прошла на ура. Честно говоря, вначале очень переживал по поводу  людей: придут или не придут? Пришли Улыбка 
На  встрече было  11 человек с разных фирм, с разным уровнем знания SQL.  В гости на открытие группы к нам приехали Денис Резник (Microsoft MVP по SQL Server) и Константин Хомяков (лидер  Kyiv SQL Server User Group, Data Mining Expert) со своими интересными докладами. В начале встречи ребята рассказали про сообщество PASS и про Sql Saturday.  Мне вручили  классную футболку, в которой уже бегает моя жена :)  А дальше пошли доклады.
На встрече прозвучали 3 доклада:
   - Я  рассказывал про кубы и про применение BI(Business Intelligence)
BCGPy28CQAEgu0V
   - Денис Резник рассказал про  Колоночные индексы

   - Костя Хомяков сделал  доклад: SSIS+DQS на примере импорта данных (Доклад Кости).

И конечно же был кофе-брейк, спонсором, которого была компания “Lime Systems”. И большое спасибо компьютерной академии “ШАГ” за предоставленный зал.  Все 4 часа встречи пролетели незаметно. А потом были прогулки по  Донецку, но это уже другая история. 
Следующая встреча планируется в начале марта, более точно дату и время я напишу на http://ineta.ru/DSSUG и в группе в facebook. Присоединяйтесь, приходите, регистрируйтесь в группе.





среда, 23 января 2013 г.

Первая встреча Donetsk Sql Server User Group


Наконец –то это свершилось.  Первая встреча группы. Организовать первую встречу, мне кажется, самое  трудное.  Она еще конечно не  прошла, а только будет. Но чтоб это случилось, пришлось очень хорошо побегать, договорится и т.д. 
И так:

Первая встреча донецкого сообщества по SQL Server состоится 2 февраля 2013 года в 12:00 по адресу:

г. Донецк, пр.Мира, 8, 5-й этаж, Компьютерная академия "ШАГ", конференц-зал.
 
На встрече выступят:
Денис Резник(Microsoft MVP SQL Server, Microsoft Certified Trainer, лидер Ukrainian SQL Server User Group) с докладом "ColumnStore Indexes - In-Memory features in SQL Server"
Константин Хомяков (лидер Kyiv SQL Server User Group) с докладом "DQS - первые шаги использования Data Mining"
Евгений Полоничко (лидер Donetsk SQL Server User Group) c докладом "MS BI: что это такое и с чем его едят?"
Всех ждем в конференц-зале компьютерной академии "ШАГ". Приходите, будем рады Вас видеть.
firstmeeting

вторник, 4 декабря 2012 г.

Donetsk Sql Server User Group

 

Ну вот могу всех обрадовать, наконец-то, в городе Донецке появилось сообщество по SQL Server.   Я являюсь лидером группы и буду стараться  ее развивать.

Так что кому интересен Microsoft Sql Server, Integration Services, Analysis Services и все что связано с ними - присоединяйтесь! Минимум раз в месяц планируются доклады. На встречи буду стараться приглашать MVP по Sql Server, которые будут делиться своим опытом, а так же делать свои интересные доклады.

Регистрация и участие в семинарах бесплатное.

Регистрация в сообщество http://ineta.ru/DSSUG. Если вдруг не получается зарегистрироваться – пишите evgen.polonichko”at-commercial”gmail.com

вторник, 20 ноября 2012 г.

Настройка FBA в SharePoint 2010 и раздача прав

 

В ходе работы над презентацией столкнулся с одной проблемой, необходимо было дать демо-доступ на SharePoint  портал, но при этом  пользователи,  должны иметь минимальные права(то есть фактически просмотр).

Первая мысль, которая пришла, настроить доменного пользователя  и все было бы красиво и легко, но …. клиентов может быть много, выдавать один и тот же логин всем, не очень красиво и хотелось бы проанализировать, что смотрят и что им интересно. Поэтому решил установить FBA(Form Based  Authentication).  Хорошо, если  вы настраиваете ферму  “с нуля”, тогда можно воспользоваться вот этими ссылочками:

Но в моем случае, все оказалось сложнее,  у меня уже был сайт с настройками, с PerfomancePoint Services, с дашбордами, но он не поддерживал FBA. Поэтому пришлось его конвертировать для поддержки  FBA. 

Все выполняемые  ниже действия вы делаете на свой страх и риск, прежде чем делать, сделайте бэкап.

И так

  1 Настраиваем ASP.NET Membership Provider (как настроить смотри в выше приведенных блогах)

  2 Необходимо запустить скрипт в powershell (после запуска скрипта откатится к предыдущей системе авторизации невозможно)

$App = get-spwebapplication “URL” – здесь указываем url вашего сайта, который вы хотите перевести на поддержку FBA
$app.useclaimsauthentication = “True”
$app.Update()

   3 После обновления сайта, заходим Центр администрирования->Управления веб-приложениями. Выбираем веб-приложение, на котором крутится ваш сайт и нажимаем поставщики проверки подлинности.

image

4 В появившемся окне нажимаем на ссылку “по умолчанию” и переходим в "Изменение параметров проверки подлинности”

image

5 В "Изменение параметров проверки подлинности” разрешаем проверку подлинности на основе форм, прописываем поставщика контроля членства в ASP.NET и имя диспетчера ролей. Сохраняем

image

6 После чего вам необходимо настроить  поставщиков через IIS( блог Donal Conlon начиная с главы Configure Membership Providers for Web App through IIS или попробуйте с помощью утилиты, которую предлагает Дмитрий Плотников). Название поставщиков должно совпадать с названиями, которые вы прописали в предыдущем шаге.

7 Дальше необходимо создать пользователя и группу. Для работы с пользователями, советую установить SharePoint 2010 FBA Pack для сайта, на котором включен  FBA.

Теперь создаем группу демо-пользователей с ограниченными правами.

8  Заходим на сайт, для которого настроили FBA, под админом. Переходим меню “Действия сайта” –>” Разрешения сайта”-> “Уровни разрешения”

image

9 Создаем новый уровень разрешения, я назвал его у себя Демо, добавляем следующие разрешения и сохраняем

 

image

 

10 После этого возвращаемся в “разрешения сайта” создаем группу Демо пользователи и присваиваем ей разрешения демо

image

11 Все. Мы создали группу, теперь нам достаточно добавлять туда пользователей, которых мы создаем для просмотра демо.  И они будут иметь ограниченный доступ. Например на моем сайте, пользователи могут смотреть дашборды и вики-страницы, не могут смотреть элементы списков, документы, загружать их и просматривать их.

четверг, 26 июля 2012 г.

Writeback в SSAS 2012. Маленький пример - план-факт(часть вторая)

 

В Tabular модели как-то не сложилось у Microsoft c writeback.  Writeback mdx в  данной модели нет (это подтверждается данной статьей на msdn). Утверждают, что запись в базу доступна через режим DirectQuery + XVelocity, но я этого не смог добиться. Но все по порядку….

Как было в первой части, для проекта берется база AdventureWorks.

Создаем проект 

image

1. Определяем источник данных, добавляем таблицы в модель FactFinance, PlanFinace (таблицы фактов), DimOrganisation, DimDepartamentGroup,DimDate. Создаем связи.

image

2. Создадим показатели в таблице FactFinance - Amount агрегация  Sum и  Average, PlanFinance – Amount агрегация Sum.

Модель создали, вроде бы все ок. А вот теперь  начинается самое интересное.

В Tabular модели есть 4 режима:

  1. DirectQuery  -  запросы отправляются реляционному источнику, кэш при этом не используется.
  2. DirectQueryWithInMemory – запросы  отправляется реляционному источнику, также может использоваться в кэш. Отправка в реляционку первоочередная.
  3. InMemory – запросы отправляются в кэш
  4. InMemoryWithDirectQuery – запросы отправляются в кэш, может использоваться реляционка. Отправка в кэш первоочередная(по умолчанию)

Первые два режима работают с DAX запросами и не поддерживают MDX,  последних два режима как DAX, так и MDX. А теперь самое интересное  - клиент, который может работать с режимами DirectQuery,  это Excel 2013. Если у вас ниже офис, то тогда   с такими режимами может работать PowerView или SSRS.  Ну в принципе это было ожидаемо и я думаю в ближайшем будущем выйду дополнения для 2010 офиса. Также DirectQuery не поддерживают некоторые функции DAX, поэтому прежде чем писать формулы на DAX, включите directquery.

Данные режимы включаются следующим образом:

В свойствах модели  DirectQueryMode  поставить On, если выбудете работать с режимами DirectQuery  или DirectQueryWithInMemory

image

В свойствах проекта выбираем QueryMode:

image

И делаем деплой.

Как обычно проект лежит здесь.

Так как же обратная запись – да в принципе никак. Потому что не один клиент ни в каком режиме не позволил сделать изменения в реляционном источнике. Поэтому вопрос, связанный с обратной записью, остается открытым. Я думаю вряд ли Microsoft оставит такой продукт без данной функции.

Поживем – увидим.

четверг, 19 июля 2012 г.

Writeback в SSAS 2012. Маленький пример - план-факт(часть первая)


Для чего применяется 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
image
  • Создаем 3 измерения Dim_Date, Dim_Departament, Dim_Organisation
  • Создаем куб и 2 показателя. Один из таблицы FactFinance – Amount, где хранятся наши факты, функцию агрегации используем LastNonEmpty(так как это остатки), второй из таблицы PlanFinance- Amount, функцию агрегации делаем Sum. Название у показателей соответствующие - FactAmount и PlanAmount.
  • Включаем writeback. Для этого переходим в раздел Partitions  и правой кнопкой мышки нажимаем на партицию PlanFinance, в выпадающем меню выбираем writeback settings
image
  • В  появившемся окне вводим название таблицы, куда будут записываться изменения, источник данных и Storage Mode: Molap или Rolap. Я использую Molap.
image
  • Нажимаем Ok и деплоем проект. В итоге в хранилище мы должны получить новую таблицу, в моем случае WriteTable_PlanFinance, в которую теперь будут записываться  новые данные, а также  логирование, когда была вставлена запись и кем.
Ограничения: К сожалению, есть ограничения, writeback  работает только с показателями, у которых функция агрегации суммирование. Поэтому например  показатель остатки по счетам или на складе, которые  используются с функцией агрегации LastEmpty или LastNonEmpty, необходимо будет реализовывать через фиктивные функции.
И как обычно выкладываю проект, который вы может скачать здесь.
Во второй части, я расскажу реализацию writeback в  Tabular модели SSAS