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

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

Важно!

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

К модели интеллектуального анализа данных можно создать два вида запросов: запросы содержимого, возвращающие подробные сведения о закономерностях, обнаруженных при анализе, и прогнозирующие запросы, использующие закономерности, содержащиеся в модели, для прогнозирования новых данных. Например, запрос содержимого для модели временных рядов может возвратить дополнительные сведения о найденных периодических структурах; прогнозирующий запрос может выполнить прогнозы для следующих 5 — 10 временных срезов. Запрос также позволяет получить метаданные, описывающие модель.

В этом разделе описывается процесс создания этих двух типов запросов к моделям, основанным на алгоритме временных рядов (Майкрософт).

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

Получение подсказок периодичности для модели

Получение выражения для модели ARIMA

Получение выражения для модели ARTxp

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

Основные сведения о выборе между заменой и расширением данных временных рядов

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

Прогнозирование с помощью REPLACE_MODEL_CASES

Подстановка отсутствующего значения в моделях временных рядов

Получение сведений о модели временных рядов

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

Образец запроса 1. Получение подсказок периодичности для модели

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

SELECT MINING_PARAMETERS   
FROM $system.DMSCHEMA_MINING_MODELS  
WHERE MODEL_NAME = '<model name>'  

Частичные результаты:

MINING_PARAMETERS
COMPLEXITY_PENALTY=0,1,MINIMUM_SUPPORT=10,PERIODICITY_HINT={1,3},....

Указание периодичности по умолчанию {1} появляется во всех моделях. Данный образец модели был создан с дополнительным указанием, которое может отсутствовать в окончательной модели.

Примечание

Результаты были усечены для удобства чтения.

Образец запроса 2. Получение уравнения для модели ARIMA

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

Например, префикс TA означает, что узел является частью дерева ARIMA, тогда как префикс TS используется для деревьев ARTXP. Деревья корня ARIMA можно найти с помощью запроса к содержимому модели для узлов со значением NODE_TYPE, равным 27. Значение ATTRIBUTE_NAME можно использовать для поиска корневого узла ARIMA для конкретных рядов данных. В этом примере запроса выполняется поиск узлов ARIMA, представляющих значения объема продаж модели R250 в Европе.

SELECT NODE_UNIQUE_NAME  
FROM Forecasting.CONTENT  
WHERE ATTRIBUTE_NAME = 'R250 Europe: Quantity"  
AND NODE_TYPE = 27  

С помощью идентификатора этого узла можно получить подробные данные об уравнении ARIMA для этого дерева. Приведенная ниже инструкция DMX извлекает краткую форму уравнения ARIMA для рядов данных. Она также возвращает пересечение из вложенной таблицы — NODE_DISTRIBUTION. В этом примере уравнение получается по ссылке на уникальный идентификатор TA00000007 узла. Однако при использовании идентификатора другого узла можно получить от модели несколько другие результаты.

SELECT FLATTENED NODE_CAPTION as [Short equation],   
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE   
FROM NODE_DISTRIBUTION) as t  
FROM Forecasting.CONTENT  
WHERE NODE_NAME = 'TA00000007'  

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

Краткое выражение T.ATTRIBUTE_NAME t.ATTRIBUTE_VALUE
ARIMA (2,0,7)x(1,0,2)(12) R250 Europe:Quantity(Intercept) 15.24....
ARIMA (2,0,7)x(1,0,2)(12) R250 Europe:Quantity(Periodicity) 1
ARIMA (2,0,7)x(1,0,2)(12) R250 Europe:Quantity(Periodicity) 12

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

Образец запроса 3. Получение уравнения для модели ARTXP

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

Приведенная ниже инструкция DMX извлекает данные для части дерева ARTxp, представляющей объем продаж модели R250 в Европе.

Примечание

Имя столбца вложенной таблицы — VARIANCE — должно быть заключено в скобки, чтобы отличаться от зарезервированного ключевого слова с таким же именем. Столбцы вложенной таблицы — PROBABILITY и SUPPORT — не включаются, поскольку у большинства вариантов они пустые.

SELECT NODE_CAPTION as [Split information],   
(SELECT ATTRIBUTE_NAME, ATTRIBUTE_VALUE,  
   [VARIANCE]  
   FROM NODE_DISTRIBUTION) AS t  
FROM Forecasting.CONTENT  
WHERE NODE_ATTRIBUTE_NAME = 'R250 Europe:Quantity'  
AND NODE_TYPE = 15  

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

Создание прогнозов на модели временных рядов

Начиная с SQL Server 2008 enterprise, вы можете добавлять новые данные в модель временных рядов и автоматически включать новые данные в модель. Добавить новые данные в модель интеллектуального анализа данных временных рядов можно одним из двух способов.

  • Использовать PREDICTION JOIN для соединения данных из внешнего источника с обучающими данными.

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

Основные сведения о работе операций замены и расширения

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

  • Расширить: При расширении ряда данных SQL Server Analysis Services добавляет новые данные в конец существующих обучающих данных. Также увеличивается число обучающих вариантов.

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

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

  • Заменить: При замене данных в ряду данных SQL Server Analysis Services сохраняет обученную модель, но использует новые значения данных для замены некоторых или всех существующих вариантов обучения. Таким образом, размер обучающих данных никогда не меняется, но варианты постоянно заменяются более новыми данными. При достаточном количестве новых данных можно полностью заменить обучающие данные новой последовательностью.

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

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

Примечание

Когда добавляются новые данные, исторические прогнозы невозможны.

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

Чтобы получить новые прогнозы для периодов времени, не перекрывающихся с новыми данными, необходимо либо начать прогнозирование с временного среза n+1, либо запросить дополнительные временные срезы.

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

Примеры запросов и дополнительные сведения о синтаксисе для использования REPLACE_MODEL_CASES и EXTEND_MODEL_CASES см. в разделе PredictTimeSeries (DMX).

Прогнозирование с помощью EXTEND_MODEL_CASES

Прогноз зависит от того, добавляются новые обучающие варианты к существующим или замещают их. При расширении модели новые данные добавляются в конец последовательности и размер обучающего набора увеличивается. Но временные срезы, используемые для прогнозирующих запросов, всегда начинаются в конце исходной последовательности. Следовательно, если добавляется три новые точки данных и запрашивается шесть прогнозов, первые три возвращенных прогноза перекрываются новыми данными. В этом случае SQL Server Analysis Services возвращает фактические новые точки данных вместо прогнозирования, пока все новые точки данных не будут использованы. Затем SQL Server Analysis Services делает прогнозы на основе составного ряда.

Такое поведение позволяет добавлять новые данные и отображать на диаграмме прогнозов реальные объемы продаж, а не данные прогнозов.

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

  • Создать PREDICTION JOIN для модели временных рядов и определить источник новых данных за три месяца.

  • Запросить прогнозирование для шести временных срезов. Для этого задайте шесть временных срезов, указав в качестве начальной точки временной срез 1, а конечной — временной срез 7. Это справедливо только для параметра EXTEND_MODEL_CASES.

  • Чтобы получить только новые прогнозы, задайте начальную точку как 4 и конечную точку как 7.

  • Необходимо использовать аргумент EXTEND_MODEL_CASES.

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

Прогнозирование с помощью REPLACE_MODEL_CASES

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

Например, у одного из магазинов недостаточно данных о продажах. Можно создать общую модель с усреднением продаж для всех магазинов в регионе и последующим обучением модели. Затем, чтобы получить прогноз для магазина с недостаточными данными о продажах, создайте PREDICTION JOIN с новыми данными о продажах только для этого магазина. При этом SQL Server Analysis Services сохранить шаблоны, производные от региональной модели, но заменить существующие варианты обучения данными из отдельного хранилища. В результате прогнозируемые значения будут ближе к линиям тренда для отдельного магазина.

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

Например, модель была обучена на наборе данных, состоящем из 1000 строк. Затем добавляется 100 строк новых данных. SQL Server Analysis Services удаляет первые 100 строк из обучающего набора и добавляет 100 строк новых данных в конец набора в общей сложности 1000 строк. Если добавляется 1100 строк новых данных, будет использоваться только 1000 самых последних.

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

  • Создать PREDICTION JOIN для модели временных рядов и использовать аргумент REPLACE_MODEL_CASE .

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

  • Запросить прогнозирование для шести временных срезов. Для этого укажите шесть временных срезов либо укажите в качестве начальной точки временной срез 1, а конечной — временной срез 7.

    Примечание

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

    Примечание

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

Примеры запросов и дополнительные сведения о синтаксисе для использования REPLACE_MODEL_CASES и EXTEND_MODEL_CASES см. в статье PredictTimeSeries (DMX).

Подстановка отсутствующего значения в моделях временных рядов

Если новые данные добавляются в модель временных рядов с помощью инструкции PREDICTION JOIN , в новом наборе данных не может быть отсутствующих значений. В любой неполной последовательности модель должна подставить вместо отсутствующих значений NULL среднее значение, конкретное числовое значение или прогнозируемое значение. Если указать EXTEND_MODEL_CASES, SQL Server Analysis Services заменяет отсутствующие значения прогнозами на основе исходной модели. При использовании REPLACE_MODEL_CASES SQL Server Analysis Services заменяет отсутствующие значения значением, указанным в параметре MISSING_VALUE_SUBSTITUTION.

Список прогнозирующих функций

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

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

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

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

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

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

Вы также можете запрашивать модели временных рядов с помощью общей функции прогнозирования Predict (DMX).

Список функций, общих для всех алгоритмов Майкрософт, см. в разделе Общие функции прогнозирования (DMX). Синтаксис конкретных функций см. в справочнике по функциям расширений интеллектуального анализа данных.

См. также:

Запросы интеллектуального анализа данных
Алгоритм временных рядов (Майкрософт)
Microsoft Time Series Algorithm Technical Reference
Содержимое модели интеллектуального анализа данных для моделей временных рядов (службы Analysis Services — интеллектуальный анализ данных)