Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Penting
Fungsionalitas ini berada dalam Pratinjau Umum dan sesuai dengan HIPAA .
ai_forecast() adalah fungsi bernilai tabel yang dirancang untuk mengekstrapolasi data rangkaian waktu ke masa depan. Lihat Argumen untuk argumen yang tersedia untuk mengonfigurasi fungsi ini.
Persyaratan
- Gudang SQL Pro atau Tanpa Server
Sintaks
ai_forecast(
observed TABLE,
horizon DATE | TIMESTAMP | STRING,
time_col STRING,
value_col STRING | ARRAY<STRING>,
group_col STRING | ARRAY<STRING> | NULL DEFAULT NULL,
prediction_interval_width DOUBLE DEFAULT 0.95,
frequency STRING DEFAULT 'auto',
seed INTEGER | NULL DEFAULT NULL,
parameters STRING DEFAULT '{}'
)
Argumen
ai_forecast() dapat memprediksi sejumlah grup (lihat group_col) dan hingga 100 metrik (lihat value_col) dalam setiap grup. Frekuensi prakiraan sama untuk semua metrik dalam grup tetapi dapat berbeda di berbagai grup (lihat frequency).
Berikut ini adalah argumen yang tersedia untuk fungsi ini:
-
observedadalah input bernilai tabel yang digunakan sebagai data pelatihan untuk prosedur prakiraan.- Hubungan input ini harus berisi satu kolom "waktu" dan satu atau beberapa kolom "nilai". Kolom "Grup" dan "parameter" bersifat opsional. Kolom tambahan apa pun dalam hubungan input diabaikan.
-
horizonadalah kuantitas yang dapat diubah menjadi penanda waktu yang menunjukkan waktu akhir yang eksklusif dari hasil prakiraan. Dalam grup (lihatgroup_col), hasil prakiraan meliputi waktu antara pengamatan terakhir dan tenggat waktu. Jika horizon kurang dari waktu pengamatan terakhir, maka tidak ada hasil yang dihasilkan. -
time_coladalah string yang mereferensikan "kolom waktu" diobserved. Kolom yang dirujuk olehtime_colharus berupaDATEatauTIMESTAMP. -
value_coladalah string atau array string yang mereferensikan kolom nilai diobserved. Kolom yang dirujuk oleh argumen ini harus dapat dikonversi keDOUBLE. -
group_col(opsional) adalah string atau array string yang mewakili kolom grup diobserved. Jika ditentukan, kolom grup digunakan sebagai kriteria partisi, dan prakiraan dihasilkan untuk setiap grup secara independen. Jika tidak ditentukan, data input lengkap diperlakukan sebagai satu grup. -
prediction_interval_width(opsional) adalah nilai antara 0 dan 1 yang mewakili lebar interval prediksi. Nilai di masa mendatang memilikiprediction_interval_width% probabilitas jatuh antara{v}_upperdan{v}_lower. -
frequency(opsional) adalah string alias satuan waktu atau offset "pandas" yang menentukan granularitas waktu dari hasil prakiraan. Jika tidak ditentukan, granularitas prakiraan secara otomatis disimpulkan untuk setiap grup secara independen. Jika nilai frekuensi ditentukan, nilai tersebut diterapkan secara merata ke semua grup.- Frekuensi yang disimpulkan dalam grup adalah mode pengamatan terbaru. Ini adalah operasi yang mudah dipakai yang tidak dapat disesuaikan oleh pengguna.
- Sebagai contoh, rangkaian waktu dengan 99 "senin" dan 1 "selasa" menghasilkan "minggu" menjadi frekuensi yang disimpulkan.
-
seed(opsional) adalah angka yang digunakan untuk menginisialisasi generator nomor pseudorandom apa pun yang digunakan dalam prosedur prakiraan. -
parameters(opsional) adalah JSON yang dikodekan string atau nama pengidentifikasi kolom yang mewakili parameterisasi prosedur prakiraan. Kombinasi parameter apa pun dapat ditentukan dalam urutan apa pun, misalnya,{“weekly_order”: 10, “global_cap”: 1000}. Setiap parameter yang tidak ditentukan secara otomatis ditentukan berdasarkan atribut data pelatihan. Parameter berikut didukung:-
global_capdanglobal_floordapat digunakan bersama-sama atau secara independen untuk menentukan domain yang mungkin dari nilai metrik.{“global_floor”: 0}, misalnya, dapat digunakan untuk membatasi metrik seperti biaya agar selalu positif. Ini berlaku secara global untuk data pelatihan dan data yang diperkirakan, dan tidak dapat digunakan untuk memberikan batasan ketat pada nilai yang diperkirakan saja. -
daily_orderdanweekly_orderatur urutan empat komponen musiman harian dan mingguan.
-
Pengembalian
Sekumpulan baris baru yang berisi data yang diperkirakan. Skema output akan berisi kolom waktu dan grup dengan jenisnya yang tidak berubah. Misalnya, jika kolom waktu input memiliki jenis DATE, maka jenis kolom waktu output juga akan menjadi DATE. Untuk setiap kolom nilai ada tiga kolom output dengan pola {v}_forecast, , {v}_upperdan {v}_lower. Terlepas dari jenis nilai input, kolom nilai yang diperkirakan selalu jenis DOUBLE. Tabel output hanya berisi nilai di masa mendatang, mencakup rentang waktu antara akhir data yang diamati hingga cakrawala.
Lihat beberapa contoh inferensi skema yang dilakukan oleh AI_FORECAST di bawah ini:
| Tabel input | Argumen | Tabel Keluaran |
|---|---|---|
ts: TIMESTAMPval: DOUBLE |
time_col => 'ts'value_col => 'val' |
ts: TIMESTAMPval_forecast: DOUBLEval_upper: DOUBLEval_lower: DOUBLE |
ds: DATEval BIGINT |
time_col => 'ds'value_col => 'val' |
ds: DATEval_forecast: DOUBLEval_upper: DOUBLEval_lower: DOUBLE |
ts: TIMESTAMPdim1: STRINGdollars: DECIMAL(10, 2) |
time_col => 'ts'value_col => 'dollars'group_col => 'dim1' |
ts: TIMESTAMPdim1: STRINGdollars_forecast: DOUBLEdollars_upper: DOUBLEdollars_lower: DOUBLE |
ts: TIMESTAMPdim1: STRINGdim2: BIGINTdollars: DECIMAL(10, 2)users: BIGINT |
time_col => 'ts'value_col => ARRAY('dollars', 'users')group_col => ARRAY('dim1', 'dim2') |
ts: TIMESTAMPdim1: STRINGdim2: BIGINTdollars_forecast: DOUBLEdollars_upper: DOUBLEdollars_lower: DOUBLEusers_forecast: DOUBLEusers_upper: DOUBLEusers_lower: DOUBLE |
Contoh
Contoh berikut memperkirakan hingga tanggal yang ditentukan:
WITH
aggregated AS (
SELECT
DATE(tpep_pickup_datetime) AS ds,
SUM(fare_amount) AS revenue
FROM
samples.nyctaxi.trips
GROUP BY
1
)
SELECT * FROM AI_FORECAST(
TABLE(aggregated),
horizon => '2016-03-31',
time_col => 'ds',
value_col => 'revenue'
)
Berikut ini adalah contoh yang lebih kompleks:
WITH
aggregated AS (
SELECT
DATE(tpep_pickup_datetime) AS ds,
dropoff_zip,
SUM(fare_amount) AS revenue,
COUNT(*) AS n_trips
FROM
samples.nyctaxi.trips
GROUP BY
1, 2
),
spine AS (
SELECT all_dates.ds, all_zipcodes.dropoff_zip
FROM (SELECT DISTINCT ds FROM aggregated) all_dates
CROSS JOIN (SELECT DISTINCT dropoff_zip FROM aggregated) all_zipcodes
)
SELECT * FROM AI_FORECAST(
TABLE(
SELECT
spine.*,
COALESCE(aggregated.revenue, 0) AS revenue,
COALESCE(aggregated.n_trips, 0) AS n_trips
FROM spine LEFT JOIN aggregated USING (ds, dropoff_zip)
),
horizon => '2016-03-31',
time_col => 'ds',
value_col => ARRAY('revenue', 'n_trips'),
group_col => 'dropoff_zip',
prediction_interval_width => 0.9,
parameters => '{"global_floor": 0}'
)
Nota
ai_forecast tidak membuat 0 untuk entri yang hilang atau NULL dalam tabel. Jika nilai yang tepat dari entri yang hilang dapat disimpulkan, maka nilai-nilai tersebut harus digabungkan sebelum memanggil fungsi ai_forecast. Jika nilai benar-benar hilang atau tidak diketahui, maka Anda dapat membiarkan nilai sebagai NULL atau menghapusnya.
Untuk data yang sangat jarang, praktik terbaik adalah menyatukan nilai yang hilang atau memberikan nilai frekuensi secara eksplisit untuk menghindari output yang tidak terduga dari inferensi frekuensi "otomatis". Sebagai contoh, inferensi frekuensi "otomatis" pada dua entri dengan jeda waktu 14 hari akan menyimpulkan frekuensi "14D" meskipun frekuensi yang sebenarnya mungkin setiap minggu dengan satu nilai yang hilang. Menyamarkan entri yang hilang akan menghapus ambiguitas ini.
Berikut ini menunjukkan contoh di mana parameter prakiraan yang berbeda diterapkan ke grup yang berbeda dalam tabel input. Contoh menggunakan argumen parameters sebagai pengidentifikasi kolom. Ini memungkinkan pengguna untuk menyimpan JSON parameter yang ditentukan sebelumnya dalam tabel dan menggunakannya kembali pada data baru.
WITH past AS (
SELECT
CASE
WHEN fare_amount < 30 THEN 'Under $30'
ELSE '$30 or more'
END AS revenue_bucket,
CASE
WHEN fare_amount < 30 THEN '{"daily_order": 0}'
ELSE '{"daily_order": "auto"}'
END AS parameters,
DATE(tpep_pickup_datetime) AS ds,
SUM(fare_amount) AS revenue
FROM samples.nyctaxi.trips
GROUP BY ALL
)
SELECT * FROM AI_FORECAST(
TABLE(past),
horizon => (SELECT MAX(ds) + INTERVAL 30 DAYS FROM past),
time_col => 'ds',
value_col => 'revenue',
group_col => ARRAY('revenue_bucket'),
parameters => 'parameters'
)
Batasan
Batasan berikut berlaku selama pratinjau:
- Prosedur prakiraan default adalah model linear dan musiman sepotong seperti nabi. Ini adalah satu-satunya prosedur prakiraan yang didukung yang tersedia.
- Pesan kesalahan dikirimkan melalui mesin UDTF Python, dan berisi informasi jejak balik Python. Akhir jejak berisi pesan kesalahan sebenarnya.