Запросы содержимого (интеллектуальный анализ данных)

Применимо к: SQL Server 2019 и более ранних версий Analysis Services Azure Analysis Services Fabric/Power BI Premium

Важно!

Интеллектуальный анализ данных не рекомендуется использовать в службах SQL Server 2017 Analysis Services, а в SQL Server 2022 Analysis Services его поддержка прекращена. Документация не обновляется для устаревших и неподдерживаемых функций. Дополнительные сведения см. в статье об обратной совместимости служб Analysis Services.

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

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

Базовые запросы к содержимому

Примеры

Работа с результатами запроса

Базовые запросы к содержимому

Можно создавать запросы к содержимому с помощью построителя прогнозирующих запросов, использовать шаблоны запросов к содержимому расширения интеллектуального анализа данных, предусмотренные в среде SQL Server Management Studio, или писать запросы непосредственно с помощью расширения интеллектуального анализа данных. В отличие от прогнозирующих запросов, необходимость применять операции соединения к внешним данным отсутствует, поэтому написание запросов к содержимому упрощается.

В этом разделе приводится общее описание типов запросов содержимого, которые можно создавать.

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

  • Запросы к модели могут возвращать шаблоны, списки атрибутов, формулы и т. д.

Запросы к структуре и данным варианта

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

Предупреждение

Этот кэш нельзя очистить или удалить, если потребуется разделить данные на обучающие и проверочные наборы. После очистки кэша становится невозможным выполнение запроса к данным варианта.

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

Получение всех вариантов для модели
SELECT FROM <model>.CASES

Эта инструкция служит для получения указанных столбцов из данных варианта, применяемых для построения модели. Чтобы его выполнить, необходимо иметь разрешения детализации для этой модели, чтобы запустить запрос.

Просмотр всех данных, включенных в структуру
SELECT FROM <structure>.CASES

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

Получение диапазона значений
SELECT DISTINCT RangeMin(<column>), RangeMax(<column>) FROM <model>

Эта инструкция предназначена для поиска минимального, максимального и среднего значений для непрерывного столбца или для контейнеров столбца DISCRETIZED.

Получение различимых значений
SELECT DISTINCT <column>FROM <model>

Эта инструкция служит для получения всех значений столбца DISCRETE. Не используйте эту инструкцию для столбцов DISCRETIZED. Вместо этого воспользуйтесь функциями RangeMin и RangeMax .

Поиск вариантов, которые использовались для обучения модели или структуры
SELECT FROM <mining structure.CASES WHERE IsTrainingCase()

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

Поиск вариантов, которые использовались для проверки модели или структуры
SELECT FROM <mining structure.CASES WHERE IsTestingCase()

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

Детализация с переходом от конкретного шаблона модели к основополагающим данным варианта
SELECT FROM <model>.CASESWHERE IsTrainingCase() AND IsInNode(<node>)

Эта инструкция предназначена для получения детализированных данных варианта из обученной модели. Необходимо указать конкретный узел, например нужно знать идентификатор узла кластера, конкретную ветвь дерева принятия решений и т. д. Более того, для выполнения этого запроса необходимо иметь разрешения на детализацию для этой модели.

Запросы к шаблонам, статистическим данным и атрибутам модели

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

  • Извлечение формул или значений вероятностей для выполнения собственных вычислений.

  • Для модели взаимосвязей — получать правила, которые используются для создания прогноза.

  • Получение описаний конкретных правил для использования этих правил в пользовательских приложениях.

  • Просматривать скользящие средние, обнаруженные моделью временного ряда.

  • Получать формулу регрессии для некоторых сегментов линии тренда.

  • Получение искомых сведений о заказчиках, которые определены как относящиеся к конкретному кластеру.

В следующих примерах показаны несколько стандартных шаблонов для создания запросов к содержимому модели.

Получение шаблонов из модели
SELECT FROM <model>.CONTENT

Эта инструкция предназначена для получения подробных сведений о конкретных узлах в модели. В зависимости от типа алгоритма, узел может содержать правила и формулы, статистические данные несущего множества и дисперсии и т. д.

Получение атрибутов, используемых в обученной модели
CALL System.GetModelAttributes(<model>)

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

Получение содержимого, хранящегося в измерении интеллектуального анализа данных
SELECT FROM <model>.DIMENSIONCONTENT

Эта инструкция предназначена для получения данных из измерения интеллектуального анализа данных.

Этот тип запроса служит в основном для внутреннего использования. Но не все алгоритмы поддерживают эти функциональные возможности. Поддержка обозначается флажком в наборе строк схемы MINING_SERVICES.

При разработке собственного сменного алгоритма эту инструкцию можно использовать в целях проверки содержимого конкретной модели для тестирования.

Получение представления PMML модели
SELECT * FROM <model>.PMML

Возвращает XML-документ, представляющий модель в формате PMML. Поддерживаются не все типы моделей.

Примеры

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

В этом разделе приведено несколько примеров, иллюстрирующих влияние выбранного алгоритма на то, какие сведения сохраняются в модели. Дополнительные сведения о содержимом модели интеллектуального анализа данных и содержимом, относящееся к каждому типу модели, см. в разделе Содержимое модели интеллектуального анализа данных (службы Analysis Services — интеллектуальный анализ данных).

Пример 1. Запрос содержимого для моделей взаимосвязей

Инструкция SELECT FROM <model>.CONTENTвозвращает различные сведения в зависимости от типа модели, к которой выполняется запрос. Для модели взаимосвязей ключевыми являются сведения о типе узла. Узлы представляют собой своего рода контейнеры для сведений, составляющих содержимое модели. В модели взаимосвязей узлы, представляющие правила, имеют параметр NODE_TYPE, равный 8, а узлы, представляющие наборы элементов, — равный 7.

Таким образом, следующий запрос возвращает первые 10 наборов элементов, упорядоченных по размеру несущего множества (сортировка по умолчанию).

SELECT TOP 10 NODE_DESCRIPTION, NODE_PROBABILITY, SUPPORT  
FROM <model>.CONTENT WHERE NODE_TYPE = 7  

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

SELECT FLATTENED NODE_UNIQUE_NAME, NODE_DESCRIPTION,  
     (SELECT RIGHT(ATTRIBUTE_NAME, (LEN(ATTRIBUTE_NAME)-LEN('Association model name')))   
FROM NODE_DISTRIBUTION  
WHERE LEN(ATTRIBUTE_NAME)>2  
)   
AS RightSideProduct  
FROM [<Association model name>].CONTENT  
WHERE NODE_TYPE = 8   
ORDER BY NODE_SUPPORT DESC  

Ключевое слово FLATTENED указывает, что вложенный набор строк следует перевести в формат плоской таблицы. Атрибут, представляющий произведение в правой стороне правила, содержится в таблице NODE_DISTRIBUTION, поэтому добавляется требование, чтобы длина была больше 2, и в результате возвращается только строка, содержащая имя атрибута.

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

Предложение WHERE задает для параметра NODE_TYPE значение 8, чтобы получить только правила.

Дополнительные примеры см. в статье Примеры запросов моделей взаимосвязей.

Пример 2. Запрос содержимого из модели дерева принятия решений

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

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

В прогнозирующий запрос добавьте функцию прогнозирования PredictNodeId (DMX), чтобы получить идентификатор связанного узла, как показано в следующем примере:

SELECT  Predict([Bike Buyer]), PredictNodeID([Bike Buyer])   
FROM [<decision tree model name>]  
PREDICTION JOIN   
<input rowset>   

Зная идентификатор узла, содержащего результат, можно узнать правило или путь, объясняющие прогноз, с помощью запроса к содержимому, в котором указан параметр NODE_CAPTION:

SELECT NODE_CAPTION  
FROM [<decision tree model name>]   
WHERE NODE_UNIQUE_NAME= '<node id>'  

Дополнительные примеры см. в разделе Примеры запросов к модели дерева принятия решений.

Работа с результатами запроса

Как показывают эти примеры, запросы к содержимому чаще всего возвращают наборы строк в виде таблиц, но могут также включать сведения из вложенных столбцов. Можно выполнить сведение возвращенного набора строк, но это может привести к усложнению работы с результатами. В частности, содержимое узла NODE_DISTRIBUTION является вложенным, но содержит много интересных сведений о модели.

Дополнительные сведения о работе с иерархическими наборами строк см. в спецификации OLEDB на сайте MSDN.

См. также:

Общие сведения об инструкции расширения интеллектуального анализа данных SELECT
Запросы интеллектуального анализа данных