
SQLServer08_DM_Nesterov
.pdfЕсли инструкция указывает модель интеллектуального анализа данных, итоговый файл также содержит связанную структуру интеллектуального анализа данных. Если инструкция указывает WITH DEPENDENCIES, все объекты, необходимые для обработки объекта (например, источник данных и представление источника данных), включаются в ABF-файл. Чтобы экспортировать или импортировать объекты базы данных служб Analysis Services, необходимо иметь права администратора базы данных или сервера.
В следующем примере структуры интеллектуального анализа данных Targeted Mailing и Forecasting, а также модель ин-
теллектуального анализа данных Association экспортируются в определенный файл. Пусть модель Association является частью структуры интеллектуального анализа Market Basket. Тогда также экспортируется структура Market Basket. Любые другие модели интеллектуального анализа данных, которые могут существовать как часть структуры Market Basket, не будут экспортироваться, потому что модель Association была экспортирована при помощи ин-
струкции MINING MODEL, а не MINING STRUCTURE.
EXPORT MINING STRUCTURE [Targeted Mailing], [Forecasting] MINING MODEL Association TO 'C:\TM_NEW.abf'
В следующем примере модель интеллектуального анализа данных Association экспортируется в определенный файл. Вследствие того, что в инструкции указывается WITH DEPENDENCIES, объекты источника данных и представления источника данных также включаются в ABF-файл.
EXPORT MINING MODEL [Association] TO 'C:\Association_NEW.abf' WITH DEPENDENCIES
В следующем примере выполняется импорт всего содержимого файла с моделью Association, структурой и дополнительными объектами на текущий сервер.
71
IMPORT FROM 'C:\Association_NEW.abf '
Также можно защищать экспортируемую копию паролем [1]:
EXPORT MINING STRUCTURE People2 TO
'C:\temp\People2.abf' WITH PASSWORD='People2'
Тот же пароль понадобится при импорте:
IMPORT FROM 'C:\temp\People2.abf' WITH
PASSWORD='People2'
3.5.ЯЗЫК DMX: ЗАПРОСЫ
Впредыдущем разделе был рассмотрен порядок обработки структур и моделей интеллектуального анализа данных. Следующая задача – это работа с данными и построение прогнозов. Для этого используется оператор SELECT.
SELECT в DMX напоминает аналогичный оператор в SQL, но надо понимать, что и перечень решаемых задач, и особенности применения имеют существенные отличия.
При интеллектуальном анализе данных с помощью оператора
SELECT можно решить следующие задачи:
-просмотр вариантов, загруженных в структуру интеллектуального анализа данных;
-просмотр содержимого существующей модели;
-создание прогнозов по существующей модели;
-создание копии существующей модели.
Для решения первых двух задач используется следующий формат записи оператора:
SELECT [FLATTENED] [TOP <n>] <select list> FROM <model/structure>[.aspect]
[WHERE <condition expression>] [ORDER BY <expression>[DESC|ASC]]
Инструкция FLATTENED указывает на необходимость преобразования возвращаемых запросом SELECT результатов в «плоский» набор строк (т.е. преобразование к обычной таблице). Она использу-
72
ется, когда представление вариантов с вложенными таблицами в используемом по умолчанию иерархическом формате неприемлемо.
Инструкции ORDER BY и TOP <n> позволяют упорядочить возвращаемый набор по указанному параметру и вернуть только первые n значений. Это может быть полезно в сценариях аналогичных целевым рассылкам, где результаты нужно отправлять только наиболее вероятным получателям (подобный пример рассматривается в лабораторных работах, см. главу 5). Для этого можно упорядочить результаты прогнозирующего запроса для целевой рассылки по вероятности, а затем вернуть только верхние n результатов.
В список выбора <select list> могут входить ссылки на скалярные столбцы, прогнозирующие функции и выражения. Доступные параметры зависят от алгоритма и следующих условий:
- выполняется запрос к структуре или модели интеллектуального анализа;
-запрос выполняется к содержимому или к вариантам;
-источник данных является реляционной таблицей или кубом;
-делается ли прогнозирование.
Если вместо списка выбора стоит символ «*», то будут выбраны все столбцы из модели или структуры.
В списке выбора допустимо использовать псевдонимы и простые выражения. Например, ниже для всех присутствующих в модели MyModel вариантов (на это указывает ключевое слово CASES, см. далее) выводится идентификатор клиента и его фамилия и имя в виде одного столбца FullName:
SELECT [CustomerID], [Last Name] + ', ' + [FirstName] AS FullName
FROM MyModel.CASES
Инструкция WHERE позволяет ограничить перечень возвращаемых результатов только теми, что соответствуют указанному логическому условию. Синтаксис будет следующий:
WHERE <condition expression>
73
Например:
SELECT [CustomerID], [Last Name] + ', ' + [FirstName] AS FullName
FROM MyModel.CASES WHERE [CustomerID]>100
Детализация структуры
Рассмотрим теперь инструкцию FROM. Если в ней стоит
<structure>.CASES, где <structure> – имя структуры интел-
лектуального анализа, то будут возвращаться варианты, использованные для создания структуры. Если детализация для структуры не включена, выполнение данной инструкции завершится сбоем. Но по умолчанию детализация включена. Явно указать, что мы хотим работать со структурой, можно с помощью ключевых слов MINING STRUCTURE. Например, выбрать все варианты из структуры MyStr1 с преобразованием результата в плоский набор строк можно выполнив команду:
SELECT FLATTENED * FROM MINING STRUCTURE MyStr1.CASES
Теперь вспомним о том, что при определении структуры могло быть задано секционирование вариантов на обучающий и проверочный набор. Чтобы узнать, к какому набору относится вариант, ис-
пользуются функции IsTestCase() и IsTrainingCase(), воз-
вращающие истину для «проверочного» и «обучающего» варианта соответственно.
Ниже приведен пример получения списка столбцов Customer Key («ключ клиента»), Gender («пол»), Age («возраст») для вариантов, зарезервированных в проверочном наборе структуры Targeted Mailing («целевая рассылка»):
SELECT [Customer Key], Gender, Age FROM [Targeted Mailing].Cases WHERE IsTestCase()
74
Детализация модели
Аналогичным образом могут быть получены варианты из модели (проведена детализация модели). Формат оператора выглядит следующим образом:
SELECT [FLATTENED] [TOP <n>] <expression list> FROM <model>.CASES
[WHERE <condition expression>] [ORDER BY <expression> [DESC|ASC]]
Если детализация для модели интеллектуального анализа данных не включена, выполнение данной инструкции завершится ошибкой. Для расширений интеллектуального анализа данных активировать детализацию можно только при создании модели (с помощью инструкции WITH DRILLTHROUGH). В среде BI Dev Studio можно добавить детализацию и в существующую модель, но прежде чем можно будет просматривать варианты, необходимо выполнить повторную обработку модели.
Если детализация включена как для модели, так и для структуры интеллектуального анализа данных, пользователи, являющиеся членами роли, обладающей разрешением на детализацию модели и структуры, могут обращаться к столбцам в структуре интеллектуального анализа данных, которые не включены в модель.
При использовании функции IsInNode в предложении WHERE выдаются только варианты, связанные с указанным узлом (номер узла задается в столбце NODE_UNIQUE_NAME, о нем см. далее).
Ниже приведен пример, возвращающий все столбцы для всех вариантов, зарезервированных в проверочном наборе модели «Целе-
вая рассылка» (TM Decision Tree).
SELECT * FROM [TM Decision Tree].Cases WHERE IsTestCase()
В следующем примере возвращаются только те варианты из обучающего набора, которые использовались в кластере 2 модели TM_Clustering. Узел кластера 2 имеет значение «002» в столбце NODE_UNIQUE_NAME, и оно указывается в качестве аргумента функ-
75

ции IsInNode. Кроме всех столбцов модели, возвращается и столбец структуры Customer Key, который не входил в модель интеллектуального анализа данных. Этому столбцу присваивается псевдоним CustomerID. Делается это с помощью функции StructureColumn. Имя столбца структуры передается как строковое значение, поэтому его следует заключать в кавычки.
SELECT StructureColumn('Customer Key') AS CustomerID,
*
FROM [TM_Clustering].Cases
WHERE IsTrainingCase()AND IsInNode('002')
Запрос значений столбца
Ниже приведен синтаксис оператора, позволяющего получить значения указанных столбцов модели.
SELECT [FLATTENED] DISTINCT [TOP <n>] <expression list>
FROM <model>
[WHERE <condition list>][ORDER BY <expression>]
При этом, для дискретного столбца будут выведены все возможные значения, для непрерывного – среднее значение, для дискретизованного – среднее значение для каждого из определѐнных в процессе дискретизации интервалов.
Рассмотрим два примера. В первом будут выведены все значения дискретного столбца Gender (Пол) модели TM Decision Tree (результат выполнения запроса представлен в таблице 3.3).
SELECT DISTINCT [Gender]
FROM [TM Decision Tree]
Таблица 3.3
Результат выполнения запроса значений дискретного столбца
Gender
Жен
Муж
76

Во втором примере для столбца Age (возраст), определенного как непрерывный, будет выведено среднее значение, а также с помощью функций RangeMin и RangeMax, соответственно, минимальный и максимальный возраст (табл. 3.4).
SELECT DISTINCT [Age] AS [Midpoint Age],
RangeMin([Age]) AS [Minimum Age],
RangeMax([Age]) AS [Maximum Age] FROM [TM Decision Tree]
|
|
Таблица 3.4 |
|
Результат выполнения запроса для непрерывного столбца |
|||
|
|
|
|
Midpoint Age |
Minimum Age |
Maximum Age |
|
|
|
|
|
62 |
26 |
97 |
|
|
|
|
|
Запрос содержимого модели
Оператор SELECT может не только возвратить используемые моделью варианты, но и вывести ее содержимое. Для этого используется синтаксис:
SELECT [FLATTENED] [TOP <n>] <expression list> FROM <model>.CONTENT
[WHERE <condition expression>] [ORDER BY <expression> [DESC|ASC]]
Аргументы команды были уже рассмотрены выше, сейчас важно понять, что же возвратит запрос. Столбцы, составляющие содержимое модели интеллектуального анализа, перечислены в таблице 3.5 [12]. А интерпретация их значений может несколько меняться в зависимости от используемого моделью алгоритма.
Следующий пример позволяет просмотреть перечень узлов модели TM Decision Tree, где число поддерживающих узел вариантов больше 2. Считаем, что модель основана на алгоритме дерева принятия решений.
SELECT NODE_UNIQUE_NAME
FROM [TM Decision Tree].CONTENT WHERE NODE_SUPPORT > 2
77
|
Таблица 3.5 |
Столбцы содержимого модели |
|
|
|
Столбец набора строк |
Описание |
CONTENT |
|
|
|
MODEL_CATALOG |
Имя каталога. Имеет значение NULL, если |
|
поставщик не поддерживает каталоги. |
|
|
MODEL_SCHEMA |
Имя схемы. Имеет значение NULL, если |
|
поставщик не поддерживает схемы. |
|
|
MODEL_NAME |
Имя модели. Этот столбец не может содер- |
|
жать значение NULL. |
|
|
ATTRIBUTE_NAME |
Имя атрибута, соответствующего этому уз- |
|
лу. |
|
|
NODE_NAME |
Имя узла. |
|
|
NODE_UNIQUE_NAME |
Уникальное имя узла внутри модели. |
|
|
NODE_TYPE |
Целое число, представляющее тип узла. |
|
|
NODE_GUID |
Идентификатор GUID узла. Имеет значение |
|
NULL, если идентификатор GUID отсут- |
|
ствует. |
|
|
NODE_CAPTION |
Метка или заголовок, связанный с узлом. В |
|
основном используется в целях отображе- |
|
ния. Если заголовка не существует, воз- |
|
вращается значение NODE_NAME. |
|
|
CHILDREN_CARDINALITY |
Количество имеющихся у узла потомков. |
|
|
PARENT_UNIQUE_NAME |
Уникальное имя родителя узла. |
|
|
NODE_DESCRIPTION |
Описание узла. |
|
|
NODE_RULE |
XML-фрагмент, представляющий внедрен- |
|
ное в узел правило. Формат XML-строки |
|
основывается на стандарте PMML. |
|
|
MARGINAL_RULE |
XML-фрагмент, описывающий маршрут от |
|
родителя к узлу. |
|
|
NODE_PROBABILITY |
Вероятность маршрута, который заверша- |
|
ется в узле. |
|
|
MARGINAL_PROBABILITY |
Вероятность доступа к узлу от родитель- |
|
ского узла. |
|
|
78 |
|
|
Окончание табл. 3.5 |
|
|
Столбец набора строк |
Описание |
CONTENT |
|
|
|
NODE_DISTRIBUTION |
Таблица, которая содержит статистические |
|
данные, описывающие распределение зна- |
|
чений в узле. |
|
|
NODE_SUPPORT |
Количество вариантов, поддерживающих |
|
этот узел. |
|
|
3.6. ЯЗЫК DMX: ПРОГНОЗИРУЮЩИЕ ЗАПРОСЫ
Сейчас мы подошли к одному из самых интересных этапов интеллектуального анализа – построению прогнозов. Как уже отмечалось в предыдущих разделах, задача прогнозирования в языке DMX также решается с помощью оператора SELECT. При этом чаще всего используется конструкция прогнозирующего соединения – PREDICTION JOIN. С ее помощью шаблонам модели сопоставляется набор данных из внешнего источника, что позволяет определить значение для прогнозируемого столбца.
Упрощенно это можно представить следующим образом. Модель содержит некоторое множество шаблонов, описывающих зависимость выходных параметров от входных. Подобный пример приведен ниже.
1.Если Вход1=x, то Выход = «да».
2.Если Вход1=y и Вход2=z, то Выход= «нет».
3.…
При прогнозировании модель получает входные данные из внешнего источника, определяет наиболее соответствующий шаблон и выдает результат. Например, входной вариант имеет атрибут «Вход1=x», применяя первое правило получаем «Выход = «да»».
Рассмотрим теперь синтаксис оператора SELECT, использующийся для прогнозирующего соединения.
SELECT [FLATTENED] [TOP <n>] <select expression list>
79
FROM <model> | <sub select> [NATURAL] PREDICTION JOIN <source data query> [ON <join mapping list>]
[WHERE <condition expression>] [ORDER BY <expression> [DESC|ASC]]
где n целое число, указывающее количество возвращаемых строк; select expression list разделенный запятыми список столбцов и/или выражений;
model название модели;
sub select внедренная (вложенная) инструкция SELECT; source data query «исходный» запрос, описывающий набор данных, для которого производится прогнозирующее соединение. Он может представлять собой таблицу или одноэлементный запрос; join mapping list логическое выражение, включающее сравнения столбцов модели со столбцами, возвращаемыми запросом source data query; определяет условия соединения; condition expression – логическое выражение, ограничивающее множество возвращаемых значений, только теми, что соответствуют условию; условие WHERE можно применять только к прогнозируемым столбцам или к связанным столбцам;
expression – выражение, определяющее упорядочение возвращаемого результата. ORDER BY может принять в качестве аргумента только один столбец, сортировать по нескольким столбцам – нельзя.
Предложение ON позволяет сопоставить столбцы исходного запроса со столбцами модели интеллектуального анализа данных (чтобы определить, какие значения рассматривать в качестве входных при прогнозировании). Столбцы в списке join mapping list соотносятся с помощью знака равенства, как показано в следующем примере:
[MiningModel].ColumnA = [source data query].Column1 AND
[MiningModel].ColumnB = [source data query].Column2 AND ...
80