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 intero e non può essere 0.
n-end deve essere un valore intero 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 intero 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: Compilazione 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 ed è 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/2008 12:00:00 AM |
121 |
M200 Europe |
8/25/2008 12:00:00 AM |
142 |
M200 Europe |
9/25/2008 12:00:00 AM |
152 |
M200 Pacific |
7/25/2008 12:00:00 AM |
46 |
M200 Pacific |
8/25/2008 12:00:00 AM |
44 |
M200 Pacific |
9/25/2008 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 Stime avanzate basate su serie temporali (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, nell'esempio viene recuperato il valore delle colonne Amount e Quantity e viene moltiplicato ogni valore per due:
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]
Nella tabella seguente vengono confrontati i risultati della stima.
Stime originali |
Stime aggiornate |
||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
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 |
|
||||||||||||
M200 Pacific |
|
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 ed è pertanto necessario utilizzare [Quantity] come primo argomento della funzione PredictTimeSeries. Se nel modello viene utilizzato 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/2008 12:00:00 AM |
121 |
11.6050581415597 |
3.40661975300439 |
M200 Europe |
8/25/2008 12:00:00 AM |
142 |
10.678201866621 |
3.26775180615374 |
M200 Europe |
9/25/2008 12:00:00 AM |
152 |
9.86897842568614 |
3.14149302493037 |
M200 North America |
7/25/2008 12:00:00 AM |
163 |
1.20434529288162 |
1.20434529288162 |
M200 North America |
8/25/2008 12:00:00 AM |
178 |
1.65031343900634 |
1.65031343900634 |
M200 North America |
9/25/2008 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.
Vedere anche
Riferimento
Guida di riferimento alle funzioni DMX (Data Mining Extensions)