Примеры запросов моделей взаимосвязей

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

Важно!

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

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

В этом разделе объясняется, как создавать такие запросы для моделей, основанных на алгоритме Правил ассоциации Майкрософт.

Запросы содержимого

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

Получение метаданных из набора строк схемы

Получение первоначальных параметров модели

Получение списка наборов элементов и продуктов

Возвращение первых 10 наборов элементов

Прогнозирующие запросы

Прогноз взаимосвязи элементов

Определение достоверности для связанных наборов элементов

Поиск сведений о модели

Все модели интеллектуального анализа данных возвращают содержимое, полученное алгоритмом, в соответствии со стандартизованной схемой, то есть набором строк схемы модели интеллектуального анализа данных. Запросы к набору строк схемы модели интеллектуального анализа данных можно создавать с помощью инструкций расширений интеллектуального анализа данных (DMX) или с помощью SQL Server Analysis Services хранимых процедур. В SQL Server 2017 вы также можете запрашивать наборы строк схемы непосредственно в виде системных таблиц с помощью синтаксиса, подобного SQL.

Образец запроса 1. Получение метаданных модели с помощью расширений интеллектуального анализа данных

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

SELECT MODEL_CATALOG, MODEL_NAME, NODE_CAPTION,   
NODE_SUPPORT, [CHILDREN_CARDINALITY], NODE_DESCRIPTION  
FROM Association.CONTENT  
WHERE NODE_TYPE = 1  

Примечание

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

Пример результатов:

Строка Метаданные
MODEL_CATALOG Проверка взаимосвязи
MODEL_NAME Взаимосвязь
NODE_CAPTION Модель правил взаимосвязей
NODE_SUPPORT 14879
CHILDREN_CARDINALITY 942
NODE_DESCRIPTION Модель правил взаимосвязей; ITEMSET_COUNT=679; RULE_COUNT=263; MIN_SUPPORT=14; MAX_SUPPORT=4334; MIN_ITEMSET_SIZE=0; MAX_ITEMSET_SIZE=3; MIN_PROBABILITY=0.400390625; MAX_PROBABILITY=1; MIN_LIFT=0.14309369632511; MAX_LIFT=1.95758227647523

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

Вернуться в начало

Пример запроса 2: получение дополнительных метаданных из набора строк схемы

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

SELECT MODEL_CATALOG, MODEL_NAME, SERVICE_NAME, PREDICTION_ENTITY,   
MINING_STRUCTURE, LAST_PROCESSED  
FROM $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = 'Association'  

Пример результатов:

Строка Метаданные
MODEL_CATALOG Adventure Works DW Multidimensional 2012
MODEL_NAME Взаимосвязь
SERVICE_NAME Модель правил взаимосвязей
PREDICTION_ENTITY v Assoc Seq Line Items
MINING_STRUCTURE Взаимосвязь
LAST_PROCESSED 9/29/2007 10:21:24 PM

Вернуться в начало

Пример запроса 3: получение первоначальных параметров модели

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

SELECT MINING_PARAMETERS   
from $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = 'Association'  

Пример результатов:

MAXIMUM_ITEMSET_COUNT=200000,MAXIMUM_ITEMSET_SIZE=3,MAXIMUM_SUPPORT=1,MINIMUM_SUPPORT=9.40923449156529E-04,MINIMUM_IMPORTANCE=-999999999,MINIMUM_ITEMSET_SIZE=0,MINIMUM_PROBABILITY=0.4

Вернуться в начало

Поиск сведений о правилах и наборах элементов

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

Пример запроса 4: получение списка наборов элементов и продуктов

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

SELECT FLATTENED NODE_NAME, NODE_CAPTION,  
NODE_PROBABILITY, NODE_SUPPORT,  
(SELECT ATTRIBUTE_NAME FROM NODE_DISTRIBUTION) as PurchasedProducts  
FROM Association.CONTENT  
WHERE NODE_TYPE = 7  

Пример результатов:

Строка Метаданные
NODE_NAME 37
NODE_CAPTION Sport-100 = существует
NODE_PROBABILITY 0.291283016331743
NODE_SUPPORT 4334
PURCHASEDPRODUCTS.ATTRIBUTE_NAME v Assoc Seq Line Items(Sport-100)

Вернуться в начало

Пример запроса 5: возвращение первых 10 наборов элементов

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

SELECT TOP 10 (NODE_SUPPORT),NODE_NAME, NODE_CAPTION  
FROM Association.CONTENT  
WHERE NODE_TYPE = 7  

Пример результатов:

Строка Метаданные
NODE_SUPPORT 4334
NODE_NAME 37
NODE_CAPTION Sport-100 = существует

Вернуться в начало

Создание прогнозов с помощью модели

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

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

Пример запроса 6: прогноз взаимосвязанных элементов

В этом примере используется модель связи, созданная в учебнике по промежуточному интеллектуальному анализу данных (службы Analysis Services — интеллектуальный анализ данных). В примере показано создание прогнозирующего запроса, который определяет, какие товары рекомендовать клиенту, купившему определенный товар. Этот тип запроса, в котором вы предоставляете значения модели в select... Оператор UNION называется одноэлементным запросом. Поскольку прогнозируемый столбец модели, соответствующий новым значениям, представляет собой вложенную таблицу, следует использовать одно предложение SELECT для установления соответствия между новым значением и столбцом вложенной таблицы [Model], а другое предложение SELECT — для установления соответствия между столбцом вложенной таблицы и столбцом уровня вариантов [v Assoc Seq Line Items]. Добавив к запросу ключевое слово INCLUDE-STATISTICS, можно увидеть вероятность и мощность несущего множества для рекомендаций.

SELECT PredictAssociation([Association].[vAssocSeqLineItems],INCLUDE_STATISTICS, 3)  
FROM [Association]  
NATURAL PREDICTION JOIN   
(SELECT  
(SELECT 'Classic Vest' as [Model])  
AS [v Assoc Seq Line Items])  
AS t  

Пример результатов:

Моделирование $SUPPORT $PROBABILITY $ADJUSTEDPROBABILITY
Sport-100 4334 0.291283 0.252696
Фляга для воды 2866 0.19262 0.175205
Ремонтный комплект 2113 0.142012 0.132389

Вернуться в начало

Пример запроса 7: определение достоверности для связанных наборов элементов

Правила полезны для формирования рекомендаций, но наборы элементов представляют больший интерес для углубленного анализа закономерностей в наборах данных. Например, если рекомендация, возвращенная предыдущим запросом к выборке, неудовлетворительна, можно исследовать другие наборы элементов, содержащие продукт А, чтобы получить о нем более точное представление: покупают ли его вместе с любыми другими продуктами или его продажи сильно зависят от продаж каких-то определенных товаров. Самый простой способ изучить эти связи — отфильтровать наборы элементов в средстве просмотра сопоставлений (Майкрософт). однако вы можете получить те же сведения с помощью запроса.

Далее следует образец запроса, возвращающего все наборы данных с элементом «Фляга для воды», в том числе все наборы, состоящие из единственного элемента «Фляга для воды».

SELECT TOP 100 FROM   
(  
SELECT FLATTENED NODE_CAPTION, NODE_SUPPORT,   
(SELECT ATTRIBUTE_NAME from NODE_DISTRIBUTION  
WHERE ATTRIBUTE_NAME = 'v Assoc Seq Line Items(Water Bottle)') as D  
FROM Association.CONTENT  
WHERE NODE_TYPE = 7  
) AS Items  
WHERE [D.ATTRIBUTE_NAME] <> NULL  
ORDER BY NODE_SUPPORT DESC  

Пример результатов:

NODE_CAPTION NODE_SUPPORT D.ATTRIBUTE_NAME
Фляга для воды = имеется 2866 vAssocSeqLineItems(Water Bottle)
Держатель фляги для горного велосипеда = имеется, фляга для воды = имеется 1136 vAssocSeqLineItems(Water Bottle)
Держатель фляги для дорожного велосипеда = имеется, фляга для воды = имеется 1068 vAssocSeqLineItems(Water Bottle)
Фляга для воды = имеется, Sport-100 = имеется 734 vAssocSeqLineItems(Water Bottle)

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

Вернуться в начало

Список функций

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

прогнозирующую функцию Использование
IsDescendant (расширения интеллектуального анализа данных) Определяет, является ли один узел дочерним для другого узла в диаграмме нейронной сети.
IsInNode (расширения интеллектуального анализа данных) Указывает, содержит ли заданный узел текущий вариант.
PredictAdjustedProbability (расширения интеллектуального анализа данных) Возвращает взвешенную вероятность.
PredictAssociation (расширения интеллектуального анализа данных) Прогнозирует вхождение в ассоциативном наборе данных.
PredictHistogram (расширения интеллектуального анализа данных) Возвращает таблицу значений, связанную с текущим прогнозируемым значением.
PredictNodeId (расширения интеллектуального анализа данных) Возвращает параметр Node_ID для каждого случая.
PredictProbability (расширения интеллектуального анализа данных) Возвращает вероятность для прогнозируемого значения.
PredictSupport (расширения интеллектуального анализа данных) Возвращает опорное значение для указанного состояния.
PredictVariance (расширения интеллектуального анализа данных) Возвращает дисперсию для прогнозируемого значения.

См. также:

Алгоритм взаимосвязей (Майкрософт)
Технический справочник по алгоритму взаимосвязей (Майкрософт)
Содержимое моделей интеллектуального анализа данных для моделей взаимосвязей (службы Analysis Services — интеллектуальный анализ данных)