Спонсор: Microsoft
Санкт-Петербургский государственный политехнический университет
Опубликован: 06.03.2012 | Доступ: платный | Студентов: 53 / 10 | Оценка: 4.00 / 4.00 | Длительность: 10:52:00
Специальности: Системный архитектор
Лекция 11:

DMX. Запросы

< Лекция 10 || Лекция 11 || Лекция 12 >
Аннотация: В лекции рассматривается написание запросов к структурам и моделям интеллектуального анализа данных.

В предыдущем разделе был рассмотрен порядок обработки структур и моделей интеллектуального анализа данных. Следующая задача - это работа с данными и построение прогнозов. Для этого используется оператор SELECT.

SELECT в DMX очень напоминает аналогичный оператор в SQL, но надо понимать, что и перечень решаемых задач и особенности применения имеют существенные отличия.

При интеллектуальном анализе данных с помощью оператора SELECT можно решить следующие задачи:

  • просмотр вариантов, загруженных в структуру интеллектуального анализа данных;
  • просмотр содержимого существующей модели;
  • создание прогнозов по существующей модели;
  • создание копии существующей модели.

Для решения первых двух задач используется следующий формат записи оператора:

SELECT [FLATTENED] [TOP<n>] <selectlist>
FROM <model/structure>[.aspect]
[WHERE <condition expression>]
[ORDER BY <expression>[DESC|ASC]]
    

Инструкция FLATTENED указывает на необходимость преобразования возвращаемых запросом SELECT результатов в "плоский" набор строк (т.е. преобразование к обычной таблице). Она используется, когда представление вариантов с вложенными таблицами в используемом по умолчанию иерархическом формате неприемлемо.

Инструкции ORDER BY и TOP<n> позволяют упорядочить возвращаемый набор по указанному параметру и вернуть только первые n значений. Это может быть полезно в сценариях вроде целевых рассылок, где результаты нужно отправлять только наиболее вероятным получателям. Для этого можно упорядочить результаты прогнозирующего запроса целевой рассылки по вероятности, а затем вернуть только верхние n результатов.

В список выбора <selectlist> могут входить ссылки на скалярные столбцы, прогнозирующие функции и выражения. Доступные параметры зависят от алгоритма и следующих условий:

  • выполняется запрос к структуре или модели интеллектуального анализа;
  • запрос выполняется к содержимому или к вариантам;
  • источник данных является реляционной таблицей или кубом;
  • делается ли прогнозирование.

Если вместо списка выбора стоит символ "*", то будут выбраны все столбцы из модели или структуры.

В списке выбора допустимо использовать псевдонимы и простые выражения. Например, ниже для всех присутствующих в модели MyModel вариантов (на это указывает ключевое слово CASES см.ниже) выводится идентификатор клиента и его имя и фамилия в виде одного столбца FullName:

SELECT [CustomerID], [Last Name] + ', ' + [FirstName] AS FullName
FROM MyModel.CASES
    

Инструкция WHERE позволяет ограничить перечень возвращаемых результатов только теми, что соответствуют указанному логическому условию. Синтаксис будет следующий:

WHERE <condition expression>
    

Например:

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(), возвращающие истину для "проверочного" и "обучающего" варианта соответственно.

Ниже приведен пример получения списка столбцов [CustomerKey] ("ключ клиента"), Gender ("пол"), Age ("возраст") для вариантов, зарезервированных в проверочном наборе структуры [TargetedMailing] ("целевая рассылка"):

SELECT [Customer Key], Gender, Age
FROM [Targeted Mailing].Cases
WHEREIsTestCase()
    

Детализация модели

Аналогичным образом могут быть получены варианты из модели (проведена детализация модели). Формат оператора выглядит следующим образом:

SELECT [FLATTENED] [TOP <n>] <expression list> FROM <model>.CASES
[WHERE <condition expression>][ORDER BY <expression> [DESC|ASC]]
    

Если детализация для модели интеллектуального анализа данных не включена, выполнение данной инструкции завершится ошибкой. Для расширений интеллектуального анализа данных активировать детализацию можно только при создании модели (с помощью инструкции WITHDRILLTHROUGH). В среде BIDevStudio можно добавить детализацию и в существующую модель, но прежде чем будет можно просматривать варианты, необходимо выполнить повторную обработку модели.

Если детализация включена как для модели, так и для структуры интеллектуального анализа данных, пользователи, являющиеся членами роли с разрешением на детализацию модели и структуры, могут обращаться к столбцам в структуре интеллектуального анализа данных, которые не включены в модель.

При использовании функции IsInNode в предложении WHERE выдаются только варианты, связанные с указанным узлом (номер узла задается в столбце NODE_UNIQUE_NAME, о нем см. ниже).

Ниже приведен пример, возвращающийвсе столбцы для всех вариантов, зарезервированных в проверочном наборе модели "Целевая рассылка"( [TM Decision Tree]).

SELECT * FROM [TM Decision Tree].Cases
WHEREIsTestCase();
    

В следующем примере возвращаются только те варианты из обучающего набора, которые использовались в кластере 2 модели [TM_Clustering]. Узел кластера 2 имеет значение "002" в столбце NODE_UNIQUE_NAME, и оно указывается в качестве аргумента функции IsInNode. Кроме всех столбцов модели, возвращается и столбец структуры [CustomerKey], который не входил в модель интеллектуального анализа данных. Этому столбцу присваивается псевдоним 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 (Пол) модели [TMDecisionTree].

SELECT DISTINCT [Gender]
FROM [TM Decision Tree]
    

Возможный результат выполнения запроса:

Gender
Жен
Муж

Во втором примере для столбца Age (возраст), определенного как непрерывный, будет выведено среднее значение, а также с помощью функций RangeMin и RangeMax соответственно минимальный и максимальный возраст.

SELECT DISTINCT [Age] AS [Midpoint Age], 
RangeMin([Age]) AS [Minimum Age], 
RangeMax([Age]) AS [Maximum Age]
FROM [TMDecisionTree]
    

Возможный результат выполнения запроса:

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]]
    

Аргументы команды были уже рассмотрены выше, сейчас важно понять, что же возвратит запрос. Столбцы, составляющие содержимое модели интеллектуального анализа перечислены в таблице 11.1 [12]. А интерпретация их значений может несколько меняться в зависимости от используемого моделью алгоритма.

Таблица 11.1. Столбцы содержимого модели интеллектуального анализа
Столбец набора строк 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 Вероятность доступа к узлу от родительского узла.
NODE_DISTRIBUTION Таблица, которая содержит статистические данные, описывающие распределение значений в узле.
NODE_SUPPORT Количество вариантов, поддерживающих этот узел.

Следующий пример позволяет просмотреть перечень узлов модели [TM DecisionTree], где число поддерживающих узел вариантов больше 2. Считаем, что модель основана на алгоритме дерева принятия решений.

SELECT NODE_UNIQUE_NAMEFROM [TMDecisionTree].CONTENT
WHERE NODE_SUPPORT >2
    
< Лекция 10 || Лекция 11 || Лекция 12 >