PredictTimeSeries (DMX)

Aplica-se a: SQL Server Analysis Services

Os retornos previam valores futuros para os dados de séries temporais. Os dados de séries temporais são contínuos e podem ser armazenados numa tabela aninhada ou numa tabela de casos. A função PredictTimeSeries devolve sempre uma tabela aninhada.

Syntax

  
PredictTimeSeries(<table column reference>)  
PredictTimeSeries(<table column reference>, n)  
PredictTimeSeries(<table column reference>, n-start, n-end)  
PredictTimeSeries(<scalar column reference>)  
PredictTimeSeries(<scalar column reference>, n)  
PredictTimeSeries(<scalar column reference>, n-start, n-end)  
PredictTimeSeries(<table column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>  
PredictTimeSeries(<table column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>  
PredictTimeSeries(<scalar column reference>, n, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>  
PredictTimeSeries(<scalar column reference>, n-start, n-end, REPLACE_MODEL_CASES | EXTEND_MODEL_CASES) PREDICTION JOIN <source query>  

Arguments

<Referência> da coluna da tabela, <Referência> da coluna escalar
Especifica o nome da coluna a prever. A coluna pode conter dados escalares ou tabulares.

n
Especifica o número de próximos passos a prever. Se um valor não for especificado para n, o valor padrão é 1.

n não pode ser 0. A função devolve um erro se não fizeres pelo menos uma previsão.

N-Início, N-Fim
Especifica um intervalo de passos de séries temporais.

n-start deve ser um inteiro e não pode ser 0.

n-end deve ser um inteiro maior que n-start.

<Consulta à fonte>
Define os dados externos que são usados para fazer previsões.

REPLACE_MODEL_CASES | EXTEND_MODEL_CASES
Indica como lidar com novos dados.

REPLACE_MODEL_CASES especifica que os pontos de dados do modelo devem ser substituídos por novos dados. No entanto, as previsões baseiam-se nos padrões do modelo de mineração existente.

EXTEND_MODEL_CASES especifica que os novos dados devem ser adicionados ao conjunto original de dados de treino. As previsões futuras só são feitas no conjunto de dados compostos depois de os novos dados terem sido esgotados.

Estes argumentos só podem ser usados quando novos dados são adicionados usando uma instrução PREDICTION JOIN. Se usar uma consulta PREDICTION JOIN e não especificar um argumento, o padrão é EXTEND_MODEL_CASES.

Tipo de Retorno

Uma expressão> de < mesa.

Observações

O algoritmo Microsoft Time Series não suporta previsão histórica quando se utiliza a instrução PREDICTION JOIN para adicionar novos dados.

Numa JUNÇÃO DE PREVISÃO, o processo de previsão começa sempre no passo temporal imediatamente após o fim da série de treino original. Isto é verdade mesmo que adicione novos dados. Portanto, os valores do parâmetro n e do parâmetro inicial n devem ser um inteiro maior que 0.

Note

O comprimento dos novos dados não afeta o ponto de partida para a previsão. Portanto, se quiser adicionar novos dados e também fazer novas previsões, certifique-se de que define o ponto de partida da previsão para um valor superior ao comprimento dos novos dados, ou estende o ponto final da previsão pelo comprimento dos novos dados.

Examples

Os exemplos seguintes mostram como fazer previsões contra um modelo de séries temporais existente:

  • O primeiro exemplo mostra como fazer um número especificado de previsões com base no modelo atual.

  • O segundo exemplo mostra como usar o parâmetro REPLACE_MODEL_CASES para aplicar os padrões no modelo especificado a um novo conjunto de dados.

  • O terceiro exemplo mostra como usar o parâmetro EXTEND_MODEL_CASES para atualizar um modelo de mineração com dados novos.

Para saber mais sobre como trabalhar com modelos de séries temporais, consulte o tutorial de mineração de dados, Lição 2: Construir um Cenário de Previsão (Tutorial Intermédio de Mineração de Dados) e o Tutorial DMX de Previsão de Séries Temporais.

Note

Pode obter resultados diferentes do seu modelo; Os resultados dos exemplos abaixo são fornecidos apenas para ilustrar o formato dos resultados.

Exemplo 1: Prever um Número de Fatias de Tempo

O exemplo seguinte utiliza a função PredictTimeSeries para devolver uma previsão para os três passos temporais seguintes, e restringe os resultados à série M200 nas regiões Europa e Pacífico. Neste modelo em particular, o atributo previsível é Quantidade, por isso deve usar [Quantity] como primeiro argumento a função PredictTimeSeries.

SELECT FLATTENED  
    [Forecasting].[Model Region],  
    PredictTimeSeries([Forecasting].[Quantity],3)AS t   
FROM  
    [Forecasting]  
WHERE [Model Region] = 'M200 Europe'  
OR [Model Region] = 'M200 Pacific'  

Resultados esperados:

Região Modelo T.$TIME t.Quantidade
M200 Europa 25/07/2008 00:00:00 121
M200 Europa 25/08/2008 00:00:00 142
M200 Europa 25/09/2008 00:00:00 152
M200 Pacific 25/07/2008 00:00:00 46
M200 Pacific 25/08/2008 00:00:00 44
M200 Pacific 25/09/2008 00:00:00 42

Neste exemplo, a palavra-chave FLATTENED foi usada para facilitar a leitura dos resultados. Se não usar a palavra-chave FLATTENED e devolver um conjunto de linhas hierárquico, esta consulta devolve duas colunas. A primeira coluna contém o valor de [ModelRegion], e a segunda coluna contém uma tabela aninhada com duas colunas: $TIME, que mostra as fatias de tempo que estão a ser previstas, e Quantidade, que contém os valores previstos.

Exemplo 2: Adicionar novos dados e usar REPLACE_MODEL_CASES

Suponha que descobre que os dados estavam incorretos para uma determinada região e quer usar os padrões do modelo, mas ajustar as previsões para corresponder aos novos dados. Ou pode descobrir que outra região tem tendências mais fiáveis e quer aplicar o modelo mais fiável a dados de outra região.

Nesses cenários, pode usar o parâmetro REPLACE_MODEL_CASES e especificar um novo conjunto de dados para usar como dados históricos. Desta forma, as projeções serão baseadas nos padrões do modelo especificado, mas continuarão de forma fluida a partir do final dos novos pontos de dados. Para uma análise completa deste cenário, consulte Previsões Avançadas de Séries Temporais (Tutorial de Mineração de Dados Intermédias).

A seguinte consulta PREDICTION JOIN ilustra a sintaxe para substituir dados e fazer novas previsões. Para os dados de substituição, o exemplo recupera o valor das colunas Quantidade e Quantidade e multiplica cada uma por dois:

SELECT [Forecasting].[Model Region],  
    PredictTimeSeries([Forecasting].[Quantity], 3, REPLACE_MODEL_CASES)   
FROM  
    [Forecasting]  
PREDICTION JOIN  
  OPENQUERY([Adventure Works DW Multidimensional 2012],  
    'SELECT [ModelRegion],   
    ([Quantity] * 2) as Quantity,  
    ([Amount] * 2) as Amount,  
      [ReportingDate]  
    FROM [dbo].vTimeSeries  
    WHERE ModelRegion = N''M200 Pacific''  
    ') AS t  
ON  
  [Forecasting].[Model Region] = t.[ Model Region] AND  
[Forecasting].[Reporting Date] = t.[ReportingDate] AND  
[Forecasting].[Quantity] = t.[Quantity] AND  
[Forecasting].[Amount] = t.[Amount]  

As tabelas seguintes comparam os resultados da previsão.

Previsões originais:

Região Modelo Data de Relatório Quantidade
M200 Pacific 25/07/2008 00:00:00 46
M200 Pacific 25/08/2008 00:00:00 44
M200 Pacific 25/09/2008 00:00:00 42

Previsões atualizadas:

Região Modelo Data de Relatório Quantidade
M200 Pacific 25/07/2008 00:00:00 91
M200 Pacific 25/08/2008 00:00:00 89
M200 Pacific 25/09/2008 00:00:00 84

Exemplo 3: Adicionar novos dados e usar EXTEND_MODEL_CASES

O Exemplo 3 ilustra a utilização da opção EXTEND_MODEL_CASES para fornecer novos dados, que são adicionados ao final de uma série de dados existente. Em vez de substituir os pontos de dados existentes, os novos dados são adicionados ao modelo.

No exemplo seguinte, os novos dados são fornecidos na instrução SELECT que segue a NATURAL PREDICTION JOIN. Pode fornecer várias linhas de nova entrada com esta sintaxe, mas cada nova linha de entrada deve ter um carimbo temporal único:

SELECT [Model Region],  
    PredictTimeSeries([Forecasting].[Quantity], 5, EXTEND_MODEL_CASES)   
FROM  
    [Forecasting]  
NATURAL PREDICTION JOIN  
    (SELECT  
        1 as [Reporting Date],  
        10 as [Quantity],  
        'M200 Europe' AS [Model Region]  
    UNION SELECT   
        2 as [Reporting Date],  
        15 as [Quantity],  
        'M200 Europe' AS [Model Region]  
) AS T  
WHERE ([Model Region] = 'M200 Europe'  
 OR [Model Region] = 'M200 Pacific')  

Como a consulta utiliza a opção EXTEND_MODEL_CASES , os Serviços de Análise tomam as seguintes ações para as suas previsões:

  • Aumenta o tamanho total dos casos de treino ao adicionar os dois novos meses de dados ao modelo.

  • Começa as previsões no final dos dados do caso anterior. Portanto, as duas primeiras previsões representam os novos dados reais de vendas que acabou de adicionar ao modelo.

  • Devolve novas previsões para as três fatias de tempo restantes com base no modelo recentemente expandido.

A tabela seguinte lista os resultados da consulta do Exemplo 2. Note que os dois primeiros valores devolvidos para o M200 Europe são exatamente os mesmos que os novos valores que forneceu. Este comportamento é intencional; Se quiser iniciar as previsões após o fim dos novos dados, deve especificar um passo temporal inicial e um de fim.

Além disso, repare que não forneceu novos dados para a região do Pacífico. Assim, os Serviços de Análise devolvem novas previsões para todos os cinco intervalos temporais.

Quantidade: M200 Europa. EXTEND_MODEL_CASES:

$TIME Quantidade
7/25/2008 0:00 10
8/25/2008 0:00 15
9/25/2008 0:00 72
10/25/2008 0:00 69
11/25/2008 0:00 68

Quantidade: M200 Pacific. EXTEND_MODEL_CASES:

$TIME Quantidade
7/25/2008 0:00 46
8/25/2008 0:00 44
9/25/2008 0:00 42
10/25/2008 0:00 42
11/25/2008 0:00 38

Exemplo 4: Devolver Estatísticas numa Previsão de Série Temporal

A função PredictTimeSeries não suporta INCLUDE_STATISTICS como parâmetro. No entanto, a consulta seguinte pode ser usada para devolver as estatísticas de previsão para uma consulta de série temporal. Esta abordagem também pode ser usada com modelos que têm colunas de tabela aninhadas.

Neste modelo em particular, o atributo previsível é Quantidade, por isso deve usar [Quantity] como primeiro argumento a função PredictTimeSeries. Se o seu modelo usar um atributo previsível diferente, pode substituir por um nome de coluna diferente.

SELECT FLATTENED [Model Region],  
(SELECT   
     $Time,  
     [Quantity] as [PREDICTION],   
     PredictVariance([Quantity]) AS [VARIANCE],  
     PredictStdev([Quantity]) AS [STDEV]  
FROM  
      PredictTimeSeries([Quantity], 3) AS t  
) AS t  
FROM Forecasting  
WHERE [Model Region] = 'M200 Europe'  
OR [Model Region] = 'M200 North America'  

Exemplos de resultados:

Região Modelo T.$TIME t.PREVISÃO t.VARIÂNCIA t.STDEV
M200 Europa 25/07/2008 00:00:00 121 11.6050581415597 3.40661975300439
M200 Europa 25/08/2008 00:00:00 142 10.678201866621 3.26775180615374
M200 Europa 25/09/2008 00:00:00 152 9.86897842568614 3.14149302493037
M200 América do Norte 25/07/2008 00:00:00 163 1.20434529288162 1.20434529288162
M200 América do Norte 25/08/2008 00:00:00 178 1.65031343900634 1.65031343900634
M200 América do Norte 25/09/2008 00:00:00 156 1.68969399185442 1.68969399185442

Note

A palavra-chave FLATTENED foi usada neste exemplo para facilitar a apresentação dos resultados numa tabela; no entanto, se o seu fornecedor suportar rowsets hierárquicos, pode omitir a palavra-chave FLATTENED. Se omitir a palavra-chave FLATTENED, a consulta devolve duas colunas, a primeira coluna contendo o valor que identifica a [Model Region] série de dados e a segunda coluna contendo a tabela aninhada de estatísticas.