Bagikan melalui


PredictTimeSeries (DMX)

Berlaku untuk: SQL Server Analysis Services

Mengembalikan nilai masa depan yang diprediksi untuk data rangkaian waktu. Data rangkaian waktu berkelanjutan dan dapat disimpan dalam tabel berlapis atau dalam tabel kasus. Fungsi PredictTimeSeries selalu mengembalikan tabel berlapis.

Sintaks

  
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>  

Argumen

<referensi> kolom tabel, <referensi kolom skalar>
Menentukan nama kolom yang akan diprediksi. Kolom dapat berisi data skalar atau tabel.

n
Menentukan jumlah langkah berikutnya yang akan diprediksi. Jika nilai tidak ditentukan untuk n, defaultnya adalah 1.

n tidak boleh 0. Fungsi mengembalikan kesalahan jika Anda tidak membuat setidaknya satu prediksi.

n-start, n-end
Menentukan rentang langkah-langkah rangkaian waktu.

n-start harus berupa bilangan bulat dan tidak boleh 0.

n-end harus berupa bilangan bulat yang lebih besar dari n-start.

<kueri sumber>
Menentukan data eksternal yang digunakan untuk membuat prediksi.

REPLACE_MODEL_CASES | EXTEND_MODEL_CASES
Menunjukkan cara menangani data baru.

REPLACE_MODEL_CASES menentukan bahwa titik data dalam model harus diganti dengan data baru. Namun, prediksi didasarkan pada pola dalam model penambangan yang ada.

EXTEND_MODEL_CASES menentukan bahwa data baru harus ditambahkan ke himpunan data pelatihan asli. Prediksi di masa mendatang dibuat pada himpunan data komposit hanya setelah data baru habis.

Argumen ini hanya dapat digunakan saat data baru ditambahkan dengan menggunakan pernyataan PREDICTION JOIN. Jika Anda menggunakan kueri PREDICTION JOIN dan tidak menentukan argumen, defaultnya adalah EXTEND_MODEL_CASES.

Jenis Hasil

<Ekspresi> tabel.

Keterangan

Algoritma Microsoft Time Series tidak mendukung prediksi historis saat Anda menggunakan pernyataan PREDICTION JOIN untuk menambahkan data baru.

Dalam PREDICTION JOIN, proses prediksi selalu dimulai pada langkah waktu segera setelah akhir seri pelatihan asli. Ini benar bahkan jika Anda menambahkan data baru. Oleh karena itu, parameter n dan nilai parameter n-start harus berupa bilangan bulat yang lebih besar dari 0.

Catatan

Panjang data baru tidak memengaruhi titik awal untuk prediksi. Oleh karena itu, jika Anda ingin menambahkan data baru dan juga membuat prediksi baru, pastikan Anda mengatur titik awal prediksi ke nilai yang lebih besar dari panjang data baru, atau memperpanjang titik akhir prediksi dengan panjang data baru.

Contoh

Contoh berikut menunjukkan cara membuat prediksi terhadap model rangkaian waktu yang ada:

  • Contoh pertama menunjukkan cara membuat jumlah prediksi tertentu berdasarkan model saat ini.

  • Contoh kedua menunjukkan cara menggunakan parameter REPLACE_MODEL_CASES untuk menerapkan pola dalam model yang ditentukan ke sekumpulan data baru.

  • Contoh ketiga menunjukkan cara menggunakan parameter EXTEND_MODEL_CASES untuk memperbarui model penambangan dengan data baru.

Untuk mempelajari selengkapnya tentang bekerja dengan model rangkaian waktu, lihat tutorial penggalian data, Pelajaran 2: Membangun Skenario Prakiraan (Tutorial Penggalian Data Menengah) dan Tutorial DMX Prediksi Rangkaian Waktu.

Catatan

Anda mungkin mendapatkan hasil yang berbeda dari model Anda; hasil contoh di bawah ini disediakan hanya untuk mengilustrasikan format hasil.

Contoh 1: Memprediksi Jumlah Irisan Waktu

Contoh berikut menggunakan fungsi PredictTimeSeries untuk mengembalikan prediksi untuk tiga langkah waktu berikutnya, dan membatasi hasil ke seri M200 di wilayah Eropa dan Pasifik. Dalam model khusus ini, atribut yang dapat diprediksi adalah Kuantitas, jadi Anda harus menggunakan [Quantity] sebagai argumen pertama untuk fungsi PredictTimeSeries.

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

Hasil yang diharapkan:

Wilayah Model t.$TIME t.Kuantitas
M200 Eropa 25/7/2008 12:00:00 AM 121
M200 Eropa 25/8/2008 12:00:00 AM 142
M200 Eropa 25/9/2008 12:00:00 AM 152
M200 Pasifik 25/7/2008 12:00:00 AM 46
M200 Pasifik 25/8/2008 12:00:00 AM 44
M200 Pasifik 25/9/2008 12:00:00 AM 42

Dalam contoh ini, kata kunci FLATTENED telah digunakan untuk membuat hasilnya lebih mudah dibaca. Jika Anda tidak menggunakan kata kunci FLATTENED dan sebaliknya mengembalikan himpunan baris hierarkis, kueri ini mengembalikan dua kolom. Kolom pertama berisi nilai untuk [ModelRegion], dan kolom kedua berisi tabel berlapis dengan dua kolom: $TIME, yang memperlihatkan irisan waktu yang sedang diprediksi, dan Kuantitas, yang berisi nilai yang diprediksi.

Contoh 2: Menambahkan Data Baru dan Menggunakan REPLACE_MODEL_CASES

Misalkan Anda menemukan bahwa data salah untuk wilayah tertentu, dan ingin menggunakan pola dalam model, tetapi untuk menyesuaikan prediksi agar sesuai dengan data baru. Atau, Anda mungkin menemukan bahwa wilayah lain memiliki tren yang lebih andal dan Anda ingin menerapkan model yang paling andal ke data dari wilayah yang berbeda.

Dalam skenario seperti itu, Anda dapat menggunakan parameter REPLACE_MODEL_CASES dan menentukan kumpulan data baru untuk digunakan sebagai data historis. Dengan begitu, proyeksi akan didasarkan pada pola dalam model yang ditentukan, tetapi akan berlanjut dengan lancar dari akhir titik data baru. Untuk panduan lengkap skenario ini, lihat Prediksi Rangkaian Waktu Lanjutan (Tutorial Penggalian Data Menengah).

Kueri PREDICTION JOIN berikut mengilustrasikan sintaks untuk mengganti data dan membuat prediksi baru. Untuk data pengganti, contoh mengambil nilai kolom Jumlah dan Kuantitas dan mengalikan masing-masing dengan dua:

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]  

Tabel berikut membandingkan hasil prediksi.

Prediksi asli:

Wilayah Model ReportingDate Quantity
M200 Pasifik 25/7/2008 12:00:00 AM 46
M200 Pasifik 25/8/2008 12:00:00 AM 44
M200 Pasifik 25/9/2008 12:00:00 AM 42

Prediksi yang diperbarui:

Wilayah Model ReportingDate Quantity
M200 Pasifik 25/7/2008 12:00:00 AM 91
M200 Pasifik 25/8/2008 12:00:00 AM 89
M200 Pasifik 25/9/2008 12:00:00 AM 84

Contoh 3: Menambahkan Data Baru dan Menggunakan EXTEND_MODEL_CASES

Contoh 3 mengilustrasikan penggunaan opsi EXTEND_MODEL_CASES untuk menyediakan data baru, yang ditambahkan ke akhir seri data yang ada. Daripada mengganti titik data yang ada, data baru ditambahkan ke model.

Dalam contoh berikut, data baru disediakan dalam pernyataan SELECT yang mengikuti NATURAL PREDICTION JOIN. Anda dapat menyediakan beberapa baris input baru dengan sintaks ini, tetapi setiap baris input baru harus memiliki stempel waktu yang unik:

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

Karena kueri menggunakan opsi EXTEND_MODEL_CASES , Analysis Services mengambil tindakan berikut untuk prediksinya:

  • Meningkatkan ukuran total kasus pelatihan dengan menambahkan dua bulan baru data ke model.

  • Memulai prediksi di akhir data kasus sebelumnya. Oleh karena itu, dua prediksi pertama mewakili data penjualan aktual baru yang baru saja Anda tambahkan ke model.

  • Mengembalikan prediksi baru untuk tiga irisan waktu yang tersisa berdasarkan model yang baru diperluas.

Tabel berikut mencantumkan hasil kueri Contoh 2. Perhatikan bahwa dua nilai pertama yang dikembalikan untuk M200 Eropa sama persis dengan nilai baru yang Anda berikan. Perilaku ini dirancang; jika Anda ingin memulai prediksi setelah akhir data baru, Anda harus menentukan langkah waktu mulai dan berakhir.

Selain itu, perhatikan bahwa Anda tidak menyediakan data baru untuk wilayah Pasifik. Oleh karena itu, Analysis Services mengembalikan prediksi baru untuk kelima irisan waktu.

Kuantitas: M200 Eropa. EXTEND_MODEL_CASES:

$TIME Quantity
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

Kuantitas: M200 Pasifik. EXTEND_MODEL_CASES:

$TIME Quantity
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

Contoh 4: Mengembalikan Statistik dalam Prediksi Rangkaian Waktu

Fungsi PredictTimeSeries tidak mendukung INCLUDE_STATISTICS sebagai parameter. Namun, kueri berikut dapat digunakan untuk mengembalikan statistik prediksi untuk kueri rangkaian waktu. Pendekatan ini juga dapat digunakan dengan model yang memiliki kolom tabel berlapis.

Dalam model khusus ini, atribut yang dapat diprediksi adalah Kuantitas, jadi Anda harus menggunakan [Quantity] sebagai argumen pertama untuk fungsi PredictTimeSeries. Jika model Anda menggunakan atribut yang dapat diprediksi yang berbeda, Anda dapat mengganti nama kolom yang berbeda.

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'  

Hasil sampel:

Wilayah Model t.$TIME t.PREDICTION t.VARIANS t.STDEV
M200 Eropa 25/7/2008 12:00:00 AM 121 11.6050581415597 3.40661975300439
M200 Eropa 25/8/2008 12:00:00 AM 142 10.678201866621 3.26775180615374
M200 Eropa 25/9/2008 12:00:00 AM 152 9.86897842568614 3.14149302493037
Amerika Utara M200 25/7/2008 12:00:00 AM 163 1.20434529288162 1.20434529288162
Amerika Utara M200 25/8/2008 12:00:00 AM 178 1.65031343900634 1.65031343900634
Amerika Utara M200 25/9/2008 12:00:00 AM 156 1.68969399185442 1.68969399185442

Catatan

Kata kunci FLATTENED digunakan dalam contoh ini untuk membuat hasilnya lebih mudah disajikan dalam tabel; namun, jika penyedia Anda mendukung set baris hierarkis, Anda dapat menghilangkan kata kunci FLATTENED. Jika Anda menghilangkan kata kunci FLATTENED, kueri mengembalikan dua kolom, kolom pertama yang berisi nilai yang mengidentifikasi [Model Region] seri data, dan kolom kedua yang berisi tabel statistik berlapis.

Lihat Juga

Referensi Fungsi Ekstensi Penggalian Data (DMX)
Contoh Kueri Model Deret Waktu
Prediksi (DMX)