Události
Staňte se certifikovaným Datoví technici fabric
14. 1. 23 - 31. 3. 23
Zkontrolujte, jestli máte nárok na nabídku slev na zkoušku, a zaregistrujte se na bezplatné živé relace a připravte se na zkoušku DP-700.
Další informaceTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
ai_forecast
Platí pro: Databricks SQL
Důležité
Tato funkce je ve verzi Public Preview a je kompatibilní s HIPAA . Spojte se s týmem účtu Databricks a zapojte se do verze Preview.
ai_forecast()
je funkce s hodnotou tabulky navržená k extrapolaci dat časových řad do budoucnosti. Informace o dostupných argumentech pro konfiguraci této funkce najdete v části Argumenty .
Pro nebo bezserverový SQL Warehouse
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 '{}'
)
ai_forecast()
může v každé skupině předpovídat libovolný počet skupin (viz) a až 100 group_col
(viz).value_col
Frekvence prognózy je stejná pro všechny metriky ve skupině, ale může se lišit v různých skupinách (viz).frequency
Následující argumenty jsou k dispozici pro tuto funkci:
observed
je tabulkový vstup, který se používá jako tréninková data pro prognostický postup.
horizon
je množství s časovým razítkem, které představuje výhradní koncový čas výsledků prognózování. Výsledky prognózy ve skupině (viz group_col
) zahrnují čas mezi posledním pozorováním a horizontem. Pokud je horizont kratší než čas posledního pozorování, nevygenerují se žádné výsledky.time_col
je řetězec odkazující na "sloupec času" v observed
. Sloupec, na který odkazuje time_col
, by měl být DATE
nebo TIMESTAMP
.value_col
je řetězec nebo pole řetězců odkazujících na sloupce hodnot v observed
. Sloupce odkazované tímto argumentem by měly být přetypované na DOUBLE
.group_col
(volitelné) je řetězec nebo pole řetězců představujících sloupce skupiny v observed
. Pokud je zadáno, sloupce skupiny se používají jako kritéria dělení a prognózy se generují pro každou skupinu nezávisle. Pokud není zadáno, zachází se úplná vstupní data jako s jednou skupinou.prediction_interval_width
(volitelné) je hodnota mezi 0 a 1 představující šířku intervalu předpovědi. Budoucí hodnoty mají prediction_interval_width
% pravděpodobnost spadající mezi {v}_upper
a {v}_lower
.frequency
(volitelné) je řetězec určený jako časová jednotka nebo alias posunu pro pandas, který specifikuje časovou granularitu výsledků prognózy. Pokud není zadáno, členitost prognózy se automaticky odvodí pro každou skupinu nezávisle. Pokud je zadaná hodnota četnosti, použije se stejně pro všechny skupiny.
seed
(volitelné) je číslo, které slouží k inicializaci libovolných generátorů pseudonáhodných čísel používaných v postupu prognózování.parameters
(volitelné) je řetězec kódovaný JSON nebo název identifikátoru sloupce, který představuje parametrizaci procedury prognózy. Libovolnou kombinaci parametrů lze zadat v libovolném pořadí, například {“weekly_order”: 10, “global_cap”: 1000}
. Všechny nezadané parametry se automaticky určují na základě atributů trénovacích dat. Podporují se následující parametry: global_cap
a global_floor
lze použít společně nebo nezávisle na sobě k definování možné domény hodnot metriky.
{“global_floor”: 0}
Můžete například použít k omezení metriky, jako jsou náklady, aby vždy byly kladné. Tyto možnosti se vztahují globálně na trénovací data a předpovídaná data a nelze je použít k zajištění omezených omezení pouze pro prognózované hodnoty.daily_order
a weekly_order
určují fourierovy řády složek denní a týdenní sezónnosti.Nová sada řádků obsahující prognózovaná data. Výstupní schéma bude obsahovat sloupce času a seskupení s jejich typy beze změny. Pokud má například sloupec vstupního času typ DATE
, typ výstupního časového sloupce bude také DATE
. Pro každý sloupec hodnot existují tři výstupní sloupce se vzorem {v}_forecast
, {v}_upper
a {v}_lower
. Bez ohledu na vstupní typy hodnot jsou sloupce prognózované hodnoty vždy typ DOUBLE
. Výstupní tabulka obsahuje pouze budoucí hodnoty, které pokrývají časový rozsah mezi koncem pozorovaných dat až do horizontu.
Podívejte se na některé příklady odvození schématu prováděného AI_FORECAST níže:
Vstupní tabulka | Argumenty | Výstupní tabulka |
---|---|---|
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 |
Následující příklad prognózuje do zadaného data:
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'
)
Následuje složitější příklad:
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}'
)
Poznámka
Tabulky konzistentně ne materializují 0 ani prázdné položky. Pokud lze odvodit hodnoty chybějících položek, například 0
, pak tyto hodnoty sloučte před voláním funkce ai_forecast
. Pokud hodnoty skutečně chybí nebo jsou neznámé, mohou být ponechány jako NULL
.
Pro velmi řídká data je nejlepší praxí sjednocovat chybějící hodnoty nebo explicitně poskytnout hodnotu četnosti, aby se zabránilo neočekávaným výstupům automatického určení frekvence. Například "automatická" četnost odvozování dvou položek o 14 dnech od sebe odvodí frekvenci "14D", i když "skutečná" frekvence může být týdenní s chybějící hodnotou 1. Když shodíte chybějící položky, odebere se tato nejednoznačnost.
Následující příklad ukazuje, kde se pro různé skupiny ve vstupní tabulce použijí různé parametry prognózy. V příkladu se jako identifikátor sloupce používá argument parameters
. To umožňuje uživatelům ukládat dříve určené hodnoty JSONs parametrů do tabulky a znovu je používat u nových dat.
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'
)
Během verze Preview platí následující omezení:
Události
Staňte se certifikovaným Datoví technici fabric
14. 1. 23 - 31. 3. 23
Zkontrolujte, jestli máte nárok na nabídku slev na zkoušku, a zaregistrujte se na bezplatné živé relace a připravte se na zkoušku DP-700.
Další informace