Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A
A következőkre vonatkozik: Databricks SQL
Fontos
Ez a funkció nyilvános előzetes verzióban van, és HIPAA-kompatibilis.
ai_forecast()
egy táblaértékű függvény, amely az idősoradatok jövőbeni extrapolálására szolgál. A függvény konfigurálásához elérhető argumentumokat az argumentumok között találhatja meg.
Követelmény
- Pro vagy Kiszolgáló nélküli SQL adattárház
Szintaxis
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 '{}'
)
Érvek
ai_forecast()
tetszőleges számú csoport (lásd group_col
) és legfeljebb 100 metrikát (lásd value_col
) előrejelezhet minden csoporton belül. Az előrejelzés gyakorisága megegyezik a csoport összes metrikája esetében, de különböző csoportokban eltérő lehet (lásd frequency
).
A függvény argumentumai a következők:
-
observed
az előrejelzési eljárás betanítási adataiként használt táblaértékelő bemenet.- Ennek a bemeneti kapcsolatnak tartalmaznia kell egy "idő" oszlopot és egy vagy több "érték" oszlopot. A "Csoportosítás" és a "paraméterek" oszlopok megadása nem kötelező. A bemeneti relációban lévő további oszlopok figyelmen kívül lesznek hagyva.
-
horizon
egy olyan időbélyegzhető mennyiség, amely az előrejelzési eredmények jobb oldalon kizárt befejezési idejét jelöli. Egy csoporton belül (lásdgroup_col
) az előrejelzési eredmények az utolsó megfigyelés és a horizont közötti időt fedik le. Ha a horizont kisebb, mint az utolsó megfigyelési idő, akkor nem jön létre eredmény. -
time_col
egy sztring, amely azobserved
"időoszlopára" hivatkozik. Atime_col
által hivatkozott oszlopnakDATE
vagyTIMESTAMP
kell lennie. -
value_col
egy karakterlánc vagy karakterlánctömb, amelyobserved
értékoszlopaira hivatkozik. Az argumentum által hivatkozott oszlopoknak átalakíthatónak kell lenniükDOUBLE
típusra. -
group_col
(nem kötelező) aobserved
csoportoszlopokat képviselő karakterlánc vagy karakterláncok tömbje. Ha meg van adva, a rendszer particionálási feltételként csoportoszlopokat használ, és az egyes csoportokhoz egymástól függetlenül generál előrejelzéseket. Ha nincs meghatározva, a teljes bemeneti adatok egyetlen csoportként lesznek kezelve. -
prediction_interval_width
(nem kötelező) az előrejelzési időköz szélességét jelölő 0 és 1 közötti érték. A jövőbeli értékekprediction_interval_width
% valószínűséggel esnek{v}_upper
és{v}_lower
között . -
frequency
(nem kötelező) egy időegység vagy pandas offset alias karakterlánc, amely meghatározza az előrejelzési eredmények időfelbontását. Ha nincs meghatározva, az előrejelzés részletessége automatikusan meghatározódik az egyes csoportok számára egymástól függetlenül. Ha egy gyakorisági érték van megadva, a rendszer az összes csoportra egyformán alkalmazza.- A csoporton belüli következtetett gyakoriság a legutóbbi megfigyelések módja. Ez egy olyan kényelmi művelet, amelyet a felhasználó nem hajtható végre.
- Példaként egy 99 "hétfő" és 1 "kedd" tartalmazó idősor esetén a "hét" adódik gyakoriságként.
-
seed
(nem kötelező) az előrejelzési eljárásban használt pszeudorandomszám-generátorok inicializálására használt szám. -
parameters
(nem kötelező) egy sztringbe kódolt JSON vagy egy oszlopazonosító neve, amely az előrejelzési eljárás paraméterezését jelöli. A paraméterek bármilyen kombinációja tetszőleges sorrendben megadható, például{“weekly_order”: 10, “global_cap”: 1000}
. A rendszer automatikusan meghatározza a nem meghatározott paramétereket a betanítási adatok attribútumai alapján. A következő paraméterek támogatottak:-
global_cap
ésglobal_floor
együtt vagy egymástól függetlenül is használhatók a metrikaértékek lehetséges tartományának meghatározásához.{“global_floor”: 0}
például egy metrika, például a költség korlátozására használható, hogy mindig pozitív legyen. Ezek globálisan vonatkoznak a betanítási adatokra és az előrejelzett adatokra, és nem használhatók arra, hogy csak az előrejelzett értékekre korlátozza őket. -
daily_order
ésweekly_order
beállítják a napi és heti szezonális összetevők Fourier-rendjét.
-
Visszaküldések
Az előrejelzett adatokat tartalmazó sorok új készlete. A kimeneti séma tartalmazza az idő- és csoportoszlopokat, a típusuk változatlan marad. Ha például a bemeneti idő oszlop DATE
típusú, akkor a kimeneti idő oszloptípusa is DATE
lesz. Minden értékoszlophoz három kimeneti oszlop tartozik, amelyek {v}_forecast
, {v}_upper
és {v}_lower
mintát tartalmaznak. A bemeneti értéktípusoktól függetlenül az előrejelzett érték-oszlopok típusa mindig DOUBLE
. A kimeneti tábla csak jövőbeli értékeket tartalmaz, a megfigyelt adatok vége és a horizont közötti időtartományt lefedve.
Tekintse meg az alábbi AI_FORECAST által végrehajtott sémakövetkezettséget:
Beviteli táblázat | Argumentumok | Kimeneti tábla |
---|---|---|
ts: TIMESTAMP val: DOUBLE |
time_col => 'ts' value_col => 'val' |
ts: TIMESTAMP val_forecast: DOUBLE val_upper: DOUBLE val_lower: DOUBLE |
ds: DATE val BIGINT |
time_col => 'ds' value_col => 'val' |
ds: DATE val_forecast: DOUBLE val_upper: DOUBLE val_lower: DOUBLE |
ts: TIMESTAMP dim1: STRING dollars: DECIMAL(10, 2) |
time_col => 'ts' value_col => 'dollars' group_col => 'dim1' |
ts: TIMESTAMP dim1: STRING dollars_forecast: DOUBLE dollars_upper: DOUBLE dollars_lower: DOUBLE |
ts: TIMESTAMP dim1: STRING dim2: BIGINT dollars: DECIMAL(10, 2) users: BIGINT |
time_col => 'ts' value_col => ARRAY('dollars', 'users') group_col => ARRAY('dim1', 'dim2') |
ts: TIMESTAMP dim1: STRING dim2: BIGINT dollars_forecast: DOUBLE dollars_upper: DOUBLE dollars_lower: DOUBLE users_forecast: DOUBLE users_upper: DOUBLE users_lower: DOUBLE |
Példák
A következő példa egy megadott dátumig előrejelzést ad:
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'
)
A következő egy összetettebb példa:
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}'
)
Jegyzet
ai_forecast
a tábla hiányzó vagy NULL
bejegyzései esetében nem kerülnek 0-kkal pótlásra. Ha a hiányzó bejegyzések megfelelő értékeit lehet kikövetkeztetni, akkor a ai_forecast
függvény meghívása előtt kell őket beszűkíteni. Ha az értékek valóban hiányoznak vagy ismeretlenek, akkor meghagyhatja az értékeket NULL
vagy eltávolíthatja őket.
A ritkán használt adatok esetében ajánlott a hiányzó értékek ritkítását vagy a gyakorisági értéket explicit módon megadni, hogy elkerülje az "automatikus" gyakorisági következtetésből származó váratlan kimenetet. Példaként az "automatikus következtetés" két bejegyzésre 14 napos különbséggel akkor is "14D" gyakoriságot jelez, ha a "valós" gyakoriság heti lehet egy hiányzó értékkel. A hiányzó bejegyzések összevonásával megszűnne ez a kétértelműség.
Az alábbi példában különböző előrejelzési paramétereket alkalmazunk a bemeneti tábla különböző csoportjaira. A példa a parameters
argumentumot használja oszlopazonosítóként. Ez lehetővé teszi a felhasználók számára, hogy egy táblában tárolják a korábban meghatározott JSON-eket, és újra felhasználják őket az új adatokon.
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'
)
Korlátozások
Az előzetes verzióban a következő korlátozások érvényesek:
- Az alapértelmezett előrejelzési eljárás egy lineáris és szezonális, prófétikus modell. Ez az egyetlen támogatott előrejelzési eljárás.
- A hibaüzenetek a Python UDTF motoron keresztül érkeznek, és Python-nyomkövetési információkat tartalmaznak. A nyomkövetés vége tartalmazza a tényleges hibaüzenetet.