Condividi tramite


PredictTimeSeries (DMX)

Restituisce i valori futuri stimati per una serie temporale. I dati di una serie temporale sono continui e possono essere archiviati in una tabella nidificata o di case. La funzione PredictTimeSeries restituisce sempre una tabella nidificata.

Sintassi

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>

Argomenti

  • <table column reference>, <scalar column referenc>
    Specifica il nome della colonna da stimare. La colonna può contenere dati scalari o tabulari.

  • n
    Specifica il numero dei prossimi passaggi da stimare. Se non viene specificato un valore per n, il valore predefinito è 1.

    n non può essere 0. La funzione restituisce un errore se non viene indicata almeno una stima.

  • n-start, n-end
    Specifica un intervallo di passaggi della serie temporale.

    n-start deve essere un valore integer e non può essere 0.

    n-end deve essere un valore integer maggiore di n-start.

  • <source query>
    Definisce i dati esterni utilizzati per l'esecuzione di stime.

  • REPLACE_MODEL_CASES | EXTEND_MODEL_CASES
    Indica come gestire i nuovi dati.

    REPLACE_MODEL_CASES specifica che i punti dati nel modello devono essere sostituiti con i nuovi dati. Tuttavia, le stime sono basate sugli schemi nel modello di data mining esistente.

    EXTEND_MODEL_CASES specifica che i nuovi dati devono essere aggiunti al set di dati di training originale. Stime future vengono eseguite sul set di dati composto solo dopo che i nuovi dati sono stati utilizzati.

    È possibile utilizzare questi argomenti solo quando i dati nuovi sono aggiunti mediante un'istruzione PREDICTION JOIN. Se si utilizza una query PREDICTION JOIN e non si specifica un argomento, l'impostazione predefinita è EXTEND_MODEL_CASES.

Tipo restituito

<table expression>.

Osservazioni

L'algoritmo Microsoft Time Series non supporta la stima cronologica quando i dati nuovi sono aggiunti mediante l'istruzione PREDICTION JOIN.

In un'istruzione PREDICTION JOIN, il processo di stima inizia sempre immediatamente dopo la fine della serie di training originale anche se si aggiungono dati nuovi. Pertanto i parametri n e n-start devono avere un valore integer maggiore di 0.

[!NOTA]

La lunghezza dei dati nuovi non influisce sul punto iniziale di stima. Pertanto, per aggiungere dati nuovi ed eseguire anche stime nuove, accertarsi di impostare il punto di inizio della stima su un valore maggiore della lunghezza dei dati nuovi oppure estendere il punto finale della stima in base alla lunghezza dei dati nuovi.

Esempi

Negli esempi seguenti viene illustrato come eseguire stime in base a un modello Time Series esistente:

  • Nel primo esempio è illustrato come eseguire un numero specifico di stime in base al modello corrente.

  • Nel secondo esempio viene mostrato come utilizzare il parametro REPLACE_MODEL_CASES per applicare gli schemi nel modello specificato a un nuovo set di dati.

  • Nel terzo esempio è illustrato come utilizzare il parametro EXTEND_MODEL_CASES per aggiornare un modello di data mining con nuovi dati.

Per ulteriori informazioni sull'utilizzo dei modelli Time Series, vedere l'esercitazione di data mining Lezione 2: Creazione di uno scenario di previsione (Esercitazione intermedia sul data mining) e Esercitazione su DMX per le stime basate su serie temporali.

[!NOTA]

È possibile che vengano restituiti risultati diversi dal modello utilizzato. I risultati degli esempi seguenti sono forniti solo per illustrare il formato del risultato.

Esempio 1: Stima di un numero di intervalli di tempo

Nell'esempio seguente viene utilizzata la funzione PredictTimeSeries per restituire una stima per i tre intervalli temporali successivi, con risultati limitati, per la serie M200 nelle aree Europa e Pacifico. In questo modello specifico, l'attributo stimabile è Quantity, pertanto è necessario utilizzare [Quantity] come primo argomento della funzione PredictTimeSeries.

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

Risultati previsti:

Model Region

t.$TIME

t.Quantity

M200 Europe

7/25/2004 12:00:00 AM

121

M200 Europe

8/25/2004 12:00:00 AM

142

M200 Europe

9/25/2004 12:00:00 AM

152

M200 Pacific

7/25/2004 12:00:00 AM

46

M200 Pacific

8/25/2004 12:00:00 AM

44

M200 Pacific

9/25/2004 12:00:00 AM

42

In questo esempio è stata utilizzata la parola chiave FLATTENED per rendere più semplice la lettura dei risultati. Se non si utilizza la parola chiave FLATTENED e viene restituito invece un set di righe gerarchico, questa query restituisce due colonne. La prima colonna contiene il valore per [ModelRegion] e la seconda colonna contiene una tabella nidificata con due colonne: $TIME, che mostra gli intervalli di tempo stimati e Quantity, che contiene i valori stimati.

Esempio 2: Aggiunta di dati nuovi e utilizzo di REPLACE_MODEL_CASES

Si supponga di trovare dati non corretti per una particolare area e di voler utilizzare gli schemi nel modello per modificare le stime in modo che riflettano i nuovi dati. In alternativa, si potrebbe scoprire che un'altra area dispone di tendenze più affidabili e desiderare di applicare il modello più affidabile ai dati da un'area diversa.

In questo scenario, è possibile utilizzare il parametro REPLACE_MODEL_CASES e specificare un nuovo set di dati da impiegare come dati della cronologia. In tal modo, le proiezioni saranno basate sugli schemi nel modello specificato, ma continueranno uniformemente dalla fine dei nuovi punti dati. Per una procedura dettagliata completa di questo scenario, vedere Aggiunta di un modello di previsione basato su dati aggregati (Esercitazione intermedia sul data mining).

Nella seguente query PREDICTION JOIN è illustrata la sintassi per la sostituzione di dati e l'esecuzione delle nuove stime. Per i dati della sostituzione, l'esempio recupera il valore delle colonne Amount e Quantity e moltiplica ogni valore per due:

SELECT [Forecasting].[Model Region],
    PredictTimeSeries([Forecasting].[Quantity], 3, REPLACE_MODEL_CASES) 
FROM
    [Forecasting]
PREDICTION JOIN
  OPENQUERY([Adventure Works DW2008],
    '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]

Nella tabella seguente vengono confrontati i risultati della stima.

Stime originali

Stime aggiornate

M200 Pacific7/25/2004 12:00:00 AM46
M200 Pacific8/25/2004 12:00:00 AM44
M200 Pacific9/25/2004 12:00:00 AM42
M200 Pacific7/25/2004 12:00:00 AM91
M200 Pacific8/25/2004 12:00:00 AM89
M200 Pacific9/25/2004 12:00:00 AM84

Esempio 3: Aggiunta di dati nuovi e utilizzo di EXTEND_MODEL_CASES

L'esempio 3 illustra l'utilizzo dell'opzione EXTEND_MODEL_CASES per fornire i nuovi dati che vengono aggiunti alla fine di una serie di dati esistente. Anziché sostituire i punti dati esistenti, i nuovi dati vengono aggiunti nel modello.

Nell'esempio seguente, i nuovi dati vengono forniti nell'istruzione SELECT che segue NATURAL PREDICTION JOIN. È possibile fornire più righe di nuovo input con questa sintassi, ma ogni nuova riga di input deve disporre di un timestamp univoco:

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')

Poiché la query utilizza l'opzione EXTEND_MODEL_CASES, Analysis Services effettua le operazioni seguenti per le stime:

  • Aumenta la dimensione totale dei case di training aggiungendo i due nuovi mesi di dati al modello.

  • Avvia le stime alla fine dei dati del case precedenti. Pertanto, le prime due stime rappresentano i nuovi dati di vendita effettivi che sono stati appena aggiunti al modello.

  • Restituisce stime nuove per i tre intervalli di tempo rimanenti in base al modello appena espanso.

Nella tabella seguente sono elencati i risultati della query dell'esempio 2. Notare che i primi due valori restituiti per M200 Europa corrispondono esattamente ai nuovi valori forniti. Questo comportamento avviene per motivi strutturali. Per avviare stime dopo la fine dei nuovi dati, è necessario specificare intervallo temporale di inizio e di fine. Per un esempio di come eseguire questa operazione, vedere Lezione 5: Estensione del modello Time Series.

Inoltre, notare che non sono stati forniti i nuovi dati per l'area Pacifico. Pertanto Analysis Services restituisce nuove stime per tutti e cinque gli intervalli di tempo,

Quantity

EXTEND_MODEL_CASES

M200 Europe

$TIMEQuantity
7/25/2004 0:0010
8/25/2004 0:0015
9/25/2004 0:0072
10/25/2004 0:0069
11/25/2004 0:0068

M200 Pacific

$TIMEQuantity
7/25/2004 0:0046
8/25/2004 0:0044
9/25/2004 0:0042
10/25/2004 0:0042
11/25/2004 0:0038

Esempio 4: Restituzione di statistiche in una stima basata su serie temporali

La funzione PredictTimeSeries non supporta il parametro INCLUDE_STATISTICS. Tuttavia, è possibile utilizzare la query seguente per visualizzare le statistiche di stima relative a una query di serie temporale. Questo approccio può essere utilizzato anche nel caso di modelli con colonne della tabella nidificate.

In questo modello specifico, l'attributo stimabile è Quantity, pertanto è necessario utilizzare [Quantity] come primo argomento della funzione PredictTimeSeries. Se il modello utilizza un attributo stimabile diverso, è possibile sostituire un nome della colonna diverso.

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'

Risultati dell'esempio:

Model Region

t.$TIME

t.PREDICTION

t.VARIANCE

t.STDEV

M200 Europe

7/25/2004 12:00:00 AM

121

11.6050581415597

3.40661975300439

M200 Europe

8/25/2004 12:00:00 AM

142

10.678201866621

3.26775180615374

M200 Europe

9/25/2004 12:00:00 AM

152

9.86897842568614

3.14149302493037

M200 North America

7/25/2004 12:00:00 AM

163

1.20434529288162

1.20434529288162

M200 North America

8/25/2004 12:00:00 AM

178

1.65031343900634

1.65031343900634

M200 North America

9/25/2004 12:00:00 AM

156

1.68969399185442

1.68969399185442

[!NOTA]

In questo esempio è stata utilizzata la parola chiave FLATTENED per rendere più semplice la presentazione dei risultati in una tabella. Tuttavia, se il provider supporta i set di righe gerarchici, è possibile omettere la parola chiave FLATTENED. Se si omette la parola chiave FLATTENED, la query restituisce due colonne, la prima colonna contenente il valore che identifica la serie di dati [Model Region] e la seconda colonna contenente la tabella di statistiche nidificata.