Алексей Шуленин Microsoft Consulting Services См. доклад «Алгоритмы поиска закономерностей в составе аналитических служб SQL Server 2005» на конференции «Корпоративные базы данных-2006» http://citforum.ru/seminars/cbd2006/ms_data_mining .ppt В предыдущий раз мы фокусировались на серверной стороне вопроса по ходу дела упоминая о том, как создать свои элементы управления, имплементировав интерфейс IMiningModelViewerControl готовых элементах управления в составе Data Mining Web Controls Library (http://msdn2.microsoft.com/enus/library/ms160727.aspx)* покрывают 3 алгоритма: кластеры, деревья решений, наивный Байес Сегодня мы остановимся на новых возможностях Office 2007 в качестве Data Mining-клиента для SQL Server 2005 *Последняя версия доступна в составе Feature Pack for Microsoft SQL Server 2005 February 2007 (см.далее) Неуклонное движение в сторону упрощения Как и в IT в целом Если это можно назвать эволюцией Но пользователь становится еще капризнее И его инструмент переходит к разработчику От окончательной деградации спасает непрерывно усложняющаяся серверная часть 25 лет назад SQL тоже представлялся в качестве конечного клиентского инструмента Одним из преимуществ реляционного подхода преподносилась эффективная работа пользователей в терминах наглядных понятий таблиц, строк, столбцов без необходимости знать, как в действительности организованы данные в памяти Реляционная система скрывает от конечного пользователя последовательные просмотры таблиц, выполняя их наиболее эффективным образом (с) С.Д.Кузнецов «Введение в стандарты языка баз данных SQL» Аналогичную историю можно рассказать про DMX Появился в 1999 г., когда Microsoft объявила инициативу расширения стандартов OLE DB на область Data Mining Впоследствии был поддержан Hyperion, SAS, Angoss, KXEN, Megaputer, ... Вошел в состав SQL Server с версии 2000 Жизненный цикл DM-приложения был стандартизован и описан в рамках реляционной модели Создание модели = create table Обучение = insert Предсказание = select <гипотеза> prediction join <модель> … drop mining structure Test; /* Создание структуры. Одна структура может содержать несколько моделей. */ create mining structure Test ([id] long key, Product long discrete, Customer long discrete); /* Добавляем к структуре модель. В модели уточняется, какие поля являютсяисходными, а какие будем предсказывать. Также задается алгоритм поиска закономерностей со своими специфичными параметрами. */ alter mining structure Test add mining model TestModel ([id], Product predict, Customer predict) using Microsoft_Clustering (Cluster_Count = 4, Modelling_Cardinality = 50, Stopping_Tolerance = 1, Clustering_Method = 3) with drillthrough; /* Натаскиваем модель - устраиваем конвергенцию кластеров. Для других алгоритмов, например, Decision Tree, insert значило бы обучение. [Adventure Works DW] - это источник к реляционке, который должен быть прописан в Data Sources многомерной базы. */ insert into Test ([id], Product, Customer) openquery([Adventure Works DW], 'select row_number() over (order by ProductKey, CustomerKey) as ID, ProductKey, CustomerKey from dbo.FactInternetSales tablesample(1000 rows)'); /* Для просмотра модели она должна быть создана с опцией drillthrough */ select * from TestModel.Cases; /* Видим граф модели в виде таблицы. 1-я строка содержит описание модели в целом. Например, CHILDREN_CARDINALITY - это кол-во образовавшихся кластеров. Дальше следуют строки, соответствующие узлам описания этих кластеров. */ select * from TestModel.Content; /* То же самое, только результаты в виде плоского recordsetа (уплощаем NODE_DISTRIBUTION */ select flattened * from TestModel.Content; /* В запросе поля могут иметь тип "таблица" */ select node_name, node_type, node_caption, node_description, node_probability, (select attribute_name, attribute_value, [variance], attribute_value - [variance] as [С], attribute_value + [variance] as [По] from node_distribution where attribute_value <> 0) as t from TestModel.Content; /* Предсказание - это join. Можно предсказывать как одинарные значения */ select Cluster(), ClusterProbability() from TestModel natural prediction join (select 5 as X, 6 as Y) as t; /* так и наборы записей */ select t.Product, t.Customer, Cluster(), ClusterProbability() from TestModel natural prediction join openquery([Adventure Works DW], 'select top 3 ProductKey as Product, CustomerKey as Customer from dbo.FactInternetSales') as t; Гигантское спасибо авторам DMX от разработчиков, потому что создавать DM-приложения на его основе стало не в пример удобнее и быстрее, отталкиваясь от привычной реляционной парадигмы Подобно тому, как SQL пришел в свое время на смену системам на основе инвертированных списков, иерархическим, сетевым, ... Однако всерьез представить себе, что какая-нибудь домохозяйка будет по-быстрому на нем ваять прогнозные модели, мягко говоря, трудно Так же, как юзера, пишущего SQL-запросы Бывают исключения, но не всегда на пользу К тому же это не то, что мыслилось 20 лет назад: кто ж им щаз дасть права на ad hoc доступ к базе Как донести до конечного пользователя плоды ваших серверных трудов? Начальство едва ли возбудится, если ему показать скрипт на DMX Потратить еще не меньше времени на написание красивого визуального клиента с бантиками? Конечно, бывают ситуации, когда без написания собственного клиента не обойтись Но, в целом, действует знаменитое правило 80:20 В 80% случаях заказчику требуется некая штатная функциональность Под которую достаточно иметь простого, но готового клиента Начиная с появления OLAP Services в составе SQL Server 7.0, в Microsoft Excel появилась возможность «цеплять» стандартную компоненту PivotTable к многомерному источнику данных Оно и понятно – на двумерном экране сводная таблица служит идеальным инструментом представления многомерного куба Одно или несколько измерений располагается по строкам / столбцам / фильтрам, в ячейках – одна или несколько мер Поддерживаются операции slice (where) / dice (group by), rollup / drilldown, drillthrough, pivot, … Применимы стандартные возможности Excel: графики, пользовательские вычисления, ... Либо новое, либо в Existing (если уже заводили) В открывшейся панели Pivot Table Field List составляем сводную таблицу из объектов серверного куба Форматирование – меню Design Можно добавить связанный график Меню Insert С Analysis Services умели работать Office Web Components (OWC) – набор элементов управления для создания Web и Windows Forms-приложений DataSource Chart Spreadsheet PivotTable OWC выпускались в версиях 2000, ХР, 2003 11-й выпуск стал последним Окончание поддержки: Версия Mainstream Extended 9 30.06.2006 30.06.2011 10 31.12.2008 31.12.2013 11 31.12.2011 31.12.2016 На смену OWC пришли Excel Services 2007 Технология Microsoft Office SharePoint для совместного использования, управления, защиты и обеспечения целостности.xslx, xslb как интерактивных отчетов в масштабах предприятия Основные компоненты Excel Services Excel Calculation Services (ECS) - движок, который загружает книгу, вычисляет ячейки, обновляет внешние данные, управляет сессиями Excel Web Access (EWA) – веб-часть, которая отображает книгу в браузере (ActiveX не используются, только DHTML и JavaScript); может быть связана с другими веб-частями Excel Web Services (EWS) – веб-сервис, который хостится на сервере SharePoint и предоставляет интерфейсы для создания пользовательских приложений по управлению книгой Таким образом, Office Excel 2007 может рассматриваться как authoring tool, а Excel Services как reporting tool Пользователь разрабатывает книгу (workbook) и сохраняет ее в библиотеку документов На основе опубликованной книги другие пользователи могут создавать отчеты, страницы веб-частей, дашборды и пр. В опубликованной книге нельзя менять непосредственно значения ячеек – к ней нужно относится как к отчету В опубликованной книге пользователи могут обновлять данные из внешних источников и пересчитывать результаты формул Менять значения параметров Выполнять сортировку и фильтрацию ... При наличии прав можно скопировать текущее состояние опубликованной книги с результатами работы в рамках текущей сессии (все вышеперечисленное) в клиентский Excel в виде книги или снимка Report Center Содержит специальные библиотеки документов для хранения отчетов, списков, веб-частей, шаблонов страниц веб-частей и .odc Filter Web Parts и кнопка Apply Filter Например, источник содержит продажи за много лет, по разным продуктам и регионам При помощи этой возможности можно установить интересующий срез, который будет действовать одновременно сразу в нескольких веб-частях Excel Web Access Office Shared Services Dashboards Шаблон страницы из веб-частей в виде отчетов, графиков, метрик, отображающих статусы, тренды, проблемы, возможности, ... Веб-части привязываются к различным источникам KPI List Web Part KPI – измеримая цель в динамике вместе с показателями своего достижения Может собирать данные из списков SharePoint, книг Excel, SQL Server 2005 Analysis Services или с ручного ввода Скоркарда содержит иерархический список KPI, как правило, в соответствии с организационной структурой предприятия Ведение KPI возможно в различных продуктах Microsoft : Report Center в Sharepoint 2007, Business Scorecard Manager 2005, … Не стоит плодить число сущностей сверх необходимости, чтобы потом не запутаться Имеет смысл определять KPI централизованно на уровне данных (читай, в кубе OLAP), используя все прочие инструменты в качестве отображения Тем более, что все они находятся на более низких уровнях Excel 2007, работая с кубом Analysis Services 2005, «понимает» эти KPI и позволяет отображать их в виде скоркарды Так же, как в примере со сводной таблицей, встать на пустую ячейку, выбрать меню Data и соединиться с кубом, открыв существующее соединение, либо создав новое В уже знакомой панели Pivot Table Field List выбрать пункт KPIs, отметить нужные, выбрав для них интересующие характеристики: Value, Goal, Status, Trend Повторить действия для остальных KPI На самом деле, как мы видели из серверного слайда, статусное и трендовое выражения KPI возвращают число Напр., 1, 0, -1 Оно же присутствует в значении Excelной ячейки Откуда там еще берется иконка? Новая возможность в Excel 2007 под названием Conditional Formatting В состав SQL Server Reporting Services, начиная с 2000 SP2, входят веб-части для размещения отчетов на портале SPS 2003 / WSS 2.0 Report Explorer для навигации по отчетам Report Viewer для просмотра отчета Начиная с SQL Server 2005 SP2, Reporting Services могут функционировать в режиме интеграции с Sharepoint (SPS 2007/WSS 3.0) Отчеты хранятся не в базе ReportServer, а в библиотеке документов Sharepoint, т.е. в его базе Управление и просмотр отчетов консолидированы в среде Sharepoint Выполнение отчетов по расписанию, кэширование и подписки оставлены за Report Server, т.к. библиотека документов Sharepoint не имеет такой функциональности Можно использовать стандартную функциональность Sharepoint: workflow, контроль версий, совместная работа Реализуются при помощи Microsoft SQL Server 2005 Data Mining Add-ins for Microsoft Office 2007 Которые вышли в феврале 2007 г. как составная часть Feature Pack for Microsoft SQL Server 2005 - February 2007 Feature Pack – выходящий на регулярной основе набор дополнений, средств соединения, административных утилит и других полезных вещей В состав февральского пакета, кроме них, входят SQL Server 2005 Compact Edition, ADOMD.NET, SNAC, MSXML 6.0, JDBC Driver к SQL Server 2005, .NET Data Provider for mySAP Business Suite, MS OLEDB Provider for DB2, SQL Server Mgmt Pack for MOM 2005,, Datamining Viewer Controls к SQL Server 2005, объектная модель .NET для подключения своих алгоритмов Data Mining и т.д. общим весом 348 МБ Берется здесь: http://www.microsoft.com/downloads/details.aspx?FamilyID=50b979948453-4998-8226-fa42ec403d17&DisplayLang=en Из всего этого богатства нас сегодня будет интересовать только subj Не обязательно скачивать весь Feature Pack, если вас интересует отдельная компонента Data Mining Add-ins берутся здесь: http://www.microsoft.com/downloads/details.aspx?Fami lyID=7c76e8df-8674-4c3b-a99b55b17f3c4c51&DisplayLang=en Дистрибутив занимает 13.8 МБ ОС: Windows 2000 SP4; Windows Server 2003 SP1; Windows Vista; Windows XP SP2 Microsoft .NET Framework 2.0 Microsoft Office 2007 with .NET Programmability Support Редакции: Professional, Рrofessional Plus, Ultimate, Enterprise Microsoft Viso Professional 2007 with .NET Programmability Support Если ставим Data Mining Templates for Visio 40 МБ места на диске SQL Server 2005 Analysis Services Enterprise Edition – SP1 и выше Standard Edition – SP2 (и, видимо, выше) Data Mining Templates for Visio Поддерживается визульное отображение моделей в виде диаграмм Visio: Decision Tree Алгоритмы деревьев решений или регрессионных моделей Dependency Network Алгоритмы Наивный Байес, деревья решений или ассоциации Cluster Алгоритмы кластеризации Table Analysis Tools for Excel Data Mining Client for Excel Запускается автоматически при первом заходе в Excel после установки Выполняет следующие действия: Запрашивает строку соединения с OLAP-сервером Конфигурирует сервер для создания временных моделей Спрашивает существующую БД для создания постоянных моделей или создает новую Добавляет пользователей Add-In в роль администраторов этой БД <Alter AllowCreate="true" ObjectExpansion="ObjectProperties" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/analysisservices/200 3/engine"> <Object/> <ObjectDefinition> <Server> <Name>localhost</Name> <ServerProperties> <ServerProperty> <Name>DataMining\AllowSessionMiningModels</Name> <Value>true</Value> </ServerProperty> </ServerProperties> </Server> </ObjectDefinition></Alter> <Create xmlns:xsi="http://www.w3.org/2001/XMLSchemainstance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/analysisservices/200 3/engine"> <ObjectDefinition> <Database> <ID>DMAddinsDB</ID> <Name>DMAddinsDB</Name> <DataSourceImpersonationInfo> <ImpersonationMode>ImpersonateCurrentUser</Imperso nationMode> </DataSourceImpersonationInfo> </Database> </ObjectDefinition></Create> Создали роль: <Alter AllowCreate="true" ObjectExpansion="ObjectProperties" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"> <Object> <DatabaseID>DMAddinsDB</DatabaseID> <RoleID>DMc3774460-1d2d-44c1-becba8b27405dbb5</RoleID> </Object> <ObjectDefinition> <Role> <ID>DMc37744601d2d-44c1-becb-a8b27405dbb5</ID> <Name>ExcelAddins_Role_25-Apr-07 6_26_46</Name> <Description>Administrators have unrestricted access to the database (they can read, process, modify and delete objects).</Description> <Members> <Member> <Name>EUROPE\alexejs</Name> </Member> </Members> </Role> </ObjectDefinition></Alter> <PropertyList xmlns="urn:schemas-microsoft-com:xml-analysis"> <LocaleIdentifier>1033</LocaleIdentifier> <Format>Native</Format> </PropertyList> Дали административные привилегии: <Alter AllowCreate="true" ObjectExpansion="ObjectProperties" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/analysisservices/2003/engine"> <Object> <DatabaseID>DMAddinsDB</DatabaseID> <DatabasePermissionID>DatabasePermission</DatabasePermissionID> </Object> <ObjectDefinition> <DatabasePermission> <ID>DatabasePermission</ID> <Name>DatabasePermission</Name> <RoleID>DMc3774460-1d2d-44c1-becba8b27405dbb5</RoleID> <Process>true</Process> <ReadDefinition>Allowed</ReadDefinition> <Administer>true</Administer> <Read>Allowed</Read> </DatabasePermission> </ObjectDefinition></Alter> <PropertyList xmlns="urn:schemas-microsoft-com:xml-analysis"> <LocaleIdentifier>1033</LocaleIdentifier> <Format>Native</Format> </PropertyList> Далее по умолчанию открываются Sample Data из стартового меню C:\Program Files\Microsoft SQL Server 2005 DM AddIns\DMAddins_SampleData.xlsx Домашняя страница microsoft.com по технологиям Data Mining http://www.microsoft.com/sql/technologies/dm/default.mspx Страничка на microsoft.com, посвященная сегодняшней тематике http://www.microsoft.com/sql/technologies/dm/addins.mspx Там есть полезные tutorials по каждой компоненте Whitepaper по вопросам интеграции Office 2007 с SQL Server 2005 http://go.microsoft.com/fwlink/?LinkId=86356 MSDNовский форум по Data Mining: http://forums.microsoft.com/msdn/showforum.aspx?forumid=8 1&amp;siteid=1 Вопросы?