Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:
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, в зависимости от типа входных данных для запроса:
| Тип запроса | Параметры запроса |
|---|---|
| Запросы для прогнозирования одноэлементных данных | Используйте одноэлементный запрос, если вы хотите прогнозировать результаты для одного отдельного случая или нескольких новых случаев. Входные значения предоставляются непосредственно в запросе, а запрос выполняется в виде одного сеанса. |
| Пакетное прогнозирование | Используйте пакетные прогнозы при наличии внешних данных, которые вы хотите передать в модель, чтобы использовать в качестве основы для прогнозирования. Чтобы сделать прогнозы для всего набора данных, необходимо сопоставить данные во внешнем источнике со столбцами в модели, а затем указать тип прогнозных данных, которые нужно вывести. Запрос для всего набора данных выполняется в одном сеансе, что делает этот параметр гораздо более эффективным, чем отправка нескольких повторяющихся запросов. |
| Прогнозы временных рядов | Используйте запрос временных рядов, если вы хотите спрогнозировать значение в течение некоторого числа будущих шагов. Интеллектуальный анализ данных SQL Server также предоставляет следующие функции в запросах временных рядов: Вы можете расширить существующую модель, добавив новые данные в рамках запроса, и сделать прогнозы на основе составного ряда. Вы можете применить существующую модель к новой серии данных с помощью параметра REPLACE_MODEL_CASES. Вы можете выполнять перекрестное прогнозирование. |
В следующих разделах описан общий синтаксис прогнозируемых запросов, различные типы запросов прогнозирования и способы работы с результатами прогнозирующих запросов.
Базовый дизайн прогнозируемых запросов
Работа с результатами запросов
Базовый дизайн прогнозируемых запросов
При создании прогноза обычно вы предоставляете некоторые новые данные и запрашиваете модель для создания прогноза на основе новых данных.
В запросе пакетного прогнозирования модель сопоставляется с внешним источником данных с помощью предсказательного соединения.
В одиночном запросе прогноза введите одно или несколько значений для использования в качестве входных данных. Можно создать несколько прогнозов с помощью одного запроса прогнозирования. Однако если вам нужно создать много прогнозов, производительность лучше при использовании пакетного запроса.
Запросы одноэлементного и пакетного прогнозирования используют синтаксис PREDICTION JOIN для определения новых данных. Разница заключается в том, как задается входная часть операции объединения прогнозов.
В пакетном прогнозируемом запросе данные поступают из внешнего источника данных, указанного с помощью синтаксиса OPENQUERY.
В запросе синглтон-прогноза данные предоставляются встроенными в сам запрос.
Для моделей временных рядов входные данные не всегда требуются; Прогнозы можно сделать только с помощью данных, уже существующих в модели. Однако если указать новые входные данные, необходимо решить, будут ли вы использовать новые данные для обновления и расширения модели, или заменить исходный ряд данных, используемых в модели. Дополнительные сведения об этих параметрах см. в примерах запросов модели временных рядов.
Добавление функций прогнозирования
Помимо прогнозирования значения, можно настроить прогнозирующий запрос для возврата различных типов сведений, связанных с прогнозом. Например, если прогноз создает список продуктов, которые рекомендует клиенту, вы также можете вернуть вероятность для каждого прогноза, чтобы вы могли ранжировать их и представить только лучшие рекомендации пользователю.
Для этого в запрос добавляются функции прогнозирования . Каждая модель или тип запроса поддерживает определенные функции. Например, модели кластеризации поддерживают специальные функции прогнозирования, предоставляющие дополнительные сведения о кластерах, созданных моделью, в то время как модели временных рядов имеют функции, которые вычисляют различия с течением времени. Существуют также общие функции прогнозирования, которые работают с почти всеми типами моделей. Список функций прогнозирования, поддерживаемых в разных типах запросов, см. в этом разделе в справочнике по dmX: Общие функции прогнозирования (DMX).
Создание запросов для прогнозирования одноэлементных значений
Синглтон запрос для предсказаний полезен, если вы хотите создать быстрые прогнозы в режиме реального времени. Распространенным сценарием может быть то, что вы получили информацию от клиента, возможно, используя форму на веб-сайте, и вы хотите отправить эти данные в качестве входных данных в однотонный прогнозирующий запрос. Например, когда клиент выбирает продукт из списка, вы можете использовать этот выбор в качестве входных данных для запроса, который прогнозирует лучшие продукты, которые будут рекомендовать.
Запросы одиночного прогноза не требуют отдельной таблицы, содержащей входные данные. Вместо этого вы предоставляете одну или несколько строк значений в качестве входных данных модели, а прогноз или прогнозы возвращаются в режиме реального времени.
Предупреждение
Несмотря на название, запросы прогнозирования синглтонов не ограничиваются созданием одиночных прогнозов — вы можете создавать несколько прогнозов для каждого набора входных данных. Вы предоставляете несколько входных вариантов через создание инструкции SELECT для каждого входного варианта и объединения их с оператором UNION.
При создании одиночного прогностического запроса необходимо предоставить модели новые данные в виде операции prognozirovaniya JOIN. Это означает, что даже если вы не сопоставляетесь с фактической таблицей, необходимо убедиться, что новые данные соответствуют существующим столбцам в модели интеллектуального анализа данных. Если новые столбцы данных и новые данные совпадают точно, службы SQL Server Analysis Services сами сопоставляют столбцы для вас. Это называется ЕСТЕСТВЕННОЕ ПРОГНОЗИРУЮЩЕЕ СОЕДИНЕНИЕ. Однако если столбцы не совпадают, или если новые данные не содержат одинаковый вид и объем данных в модели, необходимо указать, какие столбцы в модели сопоставляют с новыми данными, или указать отсутствующие значения.
Запросы пакетного прогнозирования
Пакетный прогнозирующий запрос полезен, если у вас есть внешние данные, которые вы хотите использовать при создании прогнозов. Например, вы создали модель, которая классифицирует клиентов по их онлайн-активности и истории покупок. Эту модель можно применить к списку недавно приобретенных потенциальных клиентов, создать проекции для продаж или определить целевые показатели для предлагаемых кампаний.
При выполнении предсказательного соединения необходимо сопоставить столбцы модели со столбцами в новом источнике данных. Таким образом, источник данных, который вы выбираете для входных данных, должен иметь несколько похожие на данные в модели. Новая информация не должна точно соответствовать и может быть неполной. Например, предположим, что модель была обучена с использованием сведений о доходах и возрасте, но в списке клиентов, который вы используете для прогнозов, указаны только возрастные данные, без информации о доходах. В этом сценарии можно сопоставить новые данные с моделью и создать прогноз для каждого клиента. Однако если доход является важным прогнозатором для модели, отсутствие полной информации повлияет на качество прогнозов.
Чтобы получить наилучшие результаты, необходимо присоединить максимальное количество соответствующих столбцов между новыми данными и моделью. Однако запрос будет выполнен успешно, даже если совпадений нет. Если столбцы не присоединены, запрос вернет маргинальный прогноз, эквивалентный инструкции SELECT <predictable-column> FROM <model> без предложения PREDICTION JOIN.
После успешного сопоставления всех соответствующих столбцов выполняется запрос, а службы SQL Server Analysis Services делают прогнозы для каждой строки в новых данных на основе шаблонов в модели. Вы можете сохранить результаты обратно в новую таблицу в представлении источника данных, содержащей внешние данные, или скопировать и вставить данные с помощью SQL Server Data Tools или SQL Server Management Studio.
Предупреждение
При использовании конструктора в SQL Server Data Tools внешний источник данных сначала должен быть определен как представление источника данных.
При использовании DMX для создания соединения прогнозирования можно указать внешний источник данных с помощью команд OPENQUERY, OPENROWSET или SHAPE. Метод доступа к данным по умолчанию в шаблонах DMX — OPENQUERY. Сведения об этих методах смотрите в <запросе данных источника>.
Прогнозирование в моделях интеллектуального анализа временных рядов
Модели временных рядов отличаются от других типов моделей; модель можно использовать как для создания прогнозов, так и для предоставления новых данных модели для обновления модели и создания прогнозов на основе последних тенденций. При добавлении новых данных можно указать способ использования новых данных.
Расширение вариантов модели означает, что вы добавляете новые данные в существующую серию данных в модели временных рядов. Следовательно, прогнозы основаны на новой, объединенной серии. Этот вариант подходит, если вы хотите просто добавить несколько точек данных в существующую модель.
Например, предположим, что у вас есть существующая модель временных рядов, обученная на данных о продажах за предыдущий год. После сбора нескольких месяцев новых данных о продажах вы решите обновить прогнозы продаж на текущий год. Вы можете создать соединение прогнозирования, которое обновляет модель, добавив новые данные и расширив модель для создания новых прогнозов.
Замена кейсов модели означает, что вы сохраняете обученную модель, но заменяете базовые кейсы новым набором данных случаев. Этот параметр полезен, если вы хотите сохранить тенденцию в модели, но применить ее к другому набору данных.
Например, исходная модель может быть обучена на наборе данных с очень высоким объемом продаж; При замене базовых данных новым рядом (возможно, из магазина с меньшим объемом продаж) вы сохраняете тенденцию, но прогнозы начинаются с значений в серии замены.
Независимо от того, какой подход используется, отправная точка для прогнозов всегда является окончанием исходного ряда.
Дополнительные сведения о создании соединений прогнозирования для моделей временных рядов см. в примерах запросов модели временных рядов или PredictTimeSeries (DMX).
Работа с результатами прогнозирующего запроса
Варианты сохранения результатов предсказательного запроса в интеллектуальном анализе данных различаются в зависимости от способа создания запроса.
При создании запроса с помощью Prediction Query Builder в SQL Server Management Studio или SQL Server Data Tools, можно сохранить результаты запроса на прогнозирование в существующий источник данных в Службах SQL Server Analysis Services. Дополнительные сведения см. в разделе "Просмотр и сохранение результатов прогнозирующего запроса".
При создании запросов прогнозирования с помощью dmX в области запросов SQL Server Management Studio можно использовать параметры вывода запроса для сохранения результатов в файле или в области результатов запроса в виде текста или сетки. Дополнительные сведения см. в статьях "Редакторы запросов и текста" (SQL Server Management Studio).
При выполнении запроса прогнозирования с помощью компонентов служб Integration Services задачи позволяют записывать результаты в базу данных с помощью диспетчера подключений ADO.NET или диспетчера соединений OLEDB. Дополнительные сведения см. в Задача запроса для анализа данных.
Важно понимать, что результаты прогнозирующего запроса не похожи на результаты запроса в реляционной базе данных, которая всегда возвращает одну строку связанных значений. Каждая функция прогнозирования DMX, добавляемая в запрос, возвращает свой собственный набор строк. Таким образом, при создании прогноза в одном случае результат может быть прогнозируемым значением вместе с несколькими столбцами вложенных таблиц, содержащих дополнительные сведения.
При объединении нескольких функций в одном запросе возвращаемые результаты объединяются как иерархический набор строк. Например, предположим, что вы используете модель временных рядов для прогнозирования будущих значений объема продаж и количества продаж, используя запрос, такой как эта инструкция DMX:
SELECT
PredictTimeSeries([Forecasting].[Amount]) as [PredictedAmount]
, PredictTimeSeries([Forecasting].[Quantity]) as [PredictedQty]
FROM
[Forecasting]
Результаты этого запроса — два столбца, по одному для каждого прогнозируемого ряда, где каждая строка содержит вложенную таблицу с прогнозируемыми значениями:
ПрогнозируемаяСумма
| $TIME | Сумма |
|---|---|
| 201101 | 172067.11 |
| $TIME | Сумма |
|---|---|
| 201102 | 363390.68 |
ПрогнозируемоеКоличество
| $TIME | Количество |
|---|---|
| 201101 | 77 |
| $TIME | Количество |
|---|---|
| 201102 | 260 |
Если ваш поставщик не может обрабатывать иерархические наборы строк, вы можете сплющить результаты с помощью оператора FLATTEN в запросе прогнозирования. Дополнительные сведения, включая примеры плоских наборов строк, см. в разделе SELECT (DMX).
См. также
Запросы содержимого (интеллектуальный анализ данных)
Запросы определения данных (интеллектуальный анализ данных)