Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: Databricks SQL
Önemli
Bu işlev Genel Önizleme ve HIPAA uyumlu.
ai_forecast()
, zaman serisi verilerini geleceğe ekstrapole etmek için tasarlanmış, tablo değer döndüren bir işlevdir.
Bağımsız Değişkenler'e bu işlevi yapılandırmak için kullanılabilir bağımsız değişkenleri görmek üzere bakın.
Gereksinim
- Pro veya Sunucusuz SQL ambarı
Söz dizimi
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 '{}'
)
Argümanlar
ai_forecast()
her grup içinde herhangi bir sayıda grup (bkz group_col
. ) ve en fazla 100 ölçüm (bkz value_col
. ) tahmin edebilir. Tahmin sıklığı bir gruptaki tüm ölçümler için aynıdır ancak farklı gruplar arasında farklı olabilir (bkz frequency
. ).
Bu işlev için kullanılabilir bağımsız değişkenler şunlardır:
-
observed
, tahmin prosedürü için eğitim verisi olarak kullanılan tablo değerli bir girdidir.- Bu giriş ilişkisi bir "time" sütunu ve bir veya daha fazla "değer" sütunu içermelidir. "Group" ve "parameters" sütunları isteğe bağlıdır. Giriş ilişkisindeki ek sütunlar göz ardı edilir.
-
horizon
, tahmin sonuçlarının sağ-özel bitiş zamanını temsil eden zaman damgası atanabilir bir büyüklüktür. Bir grup içinde (bkz.group_col
) tahmin sonuçları son gözlem ile ufuk arasındaki süreyi kapsıyor. Ufuk son gözlem zamanından küçükse hiçbir sonuç oluşturulmaz. -
time_col
,observed
içindeki "saat sütununa" başvuran bir dizedir.time_col
tarafından referans alınan sütun birDATE
ya daTIMESTAMP
olmalıdır. -
value_col
,observed
değer sütunlarına başvuran bir dize veya dize dizisidir. Bu argümanın referans aldığı sütunlarDOUBLE
'a dönüştürülebilir olmalıdır. -
group_col
(isteğe bağlı),observed
içindeki grup sütunlarını temsil eden bir dize veya dize dizisidir. Belirtilirse, bölümleme ölçütü olarak grup sütunları kullanılır ve her grup için bağımsız olarak tahminler oluşturulur. Belirtilmezse, tam giriş verileri tek bir grup olarak değerlendirilir. -
prediction_interval_width
(isteğe bağlı), tahmin aralığının genişliğini temsil eden 0 ile 1 arasında bir değerdir. Gelecekteki değerlerinprediction_interval_width
ile{v}_upper
arasında düşme olasılığı{v}_lower
%. -
frequency
(isteğe bağlı), tahmin sonuçlarının zaman ayrıntı düzeyini belirten bir zaman birimi veya pandas ofset takma adı dizesidir. Belirtilmezse, her grup için tahmin ayrıntı düzeyi otomatik olarak bağımsız olarak çıkarılır. Bir sıklık değeri belirtilirse, tüm gruplara eşit olarak uygulanır.- Bir grup içindeki çıkarsanan sıklık, en son gözlemlerin modudur. Bu, kullanıcı tarafından ayarlanabilir olmayan bir kolaylık işlemidir.
- Örneğin, 99 "pazartesi" ve 1 "salı" içeren bir zaman serisi, "hafta" sonucunun çıkarılan sıklık olmasına neden olur.
-
seed
(isteğe bağlı), tahmin yordamında kullanılan sözde rastgele sayı üreteçlerini başlatmak için kullanılan bir sayıdır. -
parameters
(isteğe bağlı), dizeyle kodlanmış bir JSON veya tahmin yordamının parametreleştirmesini temsil eden bir sütun tanımlayıcısının adıdır. Herhangi bir parametre bileşimi herhangi bir sırada belirtilebilir, örneğin,{“weekly_order”: 10, “global_cap”: 1000}
. Belirtilmeyen parametreler, eğitim verilerinin özniteliklerine göre otomatik olarak belirlenir. Aşağıdaki parametreler desteklenir:-
global_cap
veglobal_floor
, ölçüm değerlerinin olası etki alanını tanımlamak için birlikte veya bağımsız olarak kullanılabilir.{“global_floor”: 0}
örneğin, maliyet gibi bir ölçümü her zaman pozitif olacak şekilde kısıtlamak için kullanılabilir. Bunlar eğitim verilerine ve tahmin edilen verilere genel olarak uygulanır ve yalnızca tahmin edilen değerlerde sıkı kısıtlamalar sağlamak için kullanılamaz. -
daily_order
veweekly_order
günlük ve haftalık mevsimsellik bileşenlerinin Fourier derecesini belirler.
-
İade
Tahmin edilen verileri içeren yeni bir satır kümesi. Çıkış şeması, türleri değişmeden zaman ve grup sütunlarını içerir. Örneğin, giriş zamanı sütununda DATE
türü varsa çıkış zamanı sütun türü de DATE
olur. Her değer sütunu için, {v}_forecast
, {v}_upper
ve {v}_lower
desenleriyle üç çıkış sütunu vardır. Giriş değeri türlerinden bağımsız olarak, tahmin edilen değer sütunları her zaman DOUBLE
türüdür. Çıkış tablosu yalnızca gelecekteki değerleri içerir ve gözlemlenen verilerin bitişi ile ufuk çizgisi arasındaki zaman aralığını kapsar.
aşağıdaki AI_FORECAST tarafından gerçekleştirilen şema çıkarımına ilişkin bazı örneklere bakın:
Giriş tablosu | Argümanlar | Çıkış tablosu |
---|---|---|
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 |
Örnekler
Aşağıdaki örnek, belirtilen tarihe kadar tahmin eder:
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şağıda daha karmaşık bir örnek verilmiştir:
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}'
)
Not
ai_forecast
tablodaki eksik veya NULL
girdiler için 0'ları oluşturmaz. Eksik girişlerin doğru değerleri çıkarılabiliyorsa, ai_forecast
işlevi çağrılmadan öncesinde birleştirilmelidir. Değerler gerçekten eksik veya bilinmiyorsa, değerleri NULL
olarak bırakabilir veya kaldırabilirsiniz.
Çok seyrek veriler için, eksik değerleri birleştirmenin veya "otomatik" frekans çıkarımının beklenmeyen çıkışını önlemek için açıkça bir sıklık değeri sağlamak en iyi yöntemdir. Örneğin, 14 gün arayla iki girişte "otomatik" sıklık çıkarımı, "gerçek" sıklık 1 eksik değerle haftalık olsa bile "14B" sıklığı çıkaracaktır. Eksik girdileri birleştirme, bu belirsizliği ortadan kaldırır.
Aşağıda, giriş tablosundaki farklı gruplara farklı tahmin parametrelerinin uygulandığı bir örnek gösterilmektedir. Örnek, sütun tanımlayıcısı olarak parameters
bağımsız değişkenini kullanır. Bu, kullanıcıların önceden belirlenen parametre JSON'lerini bir tabloda depolamasına ve bunları yeni verilerde yeniden kullanmasına olanak tanır.
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'
)
Sınırlamalar
Önizleme sırasında aşağıdaki sınırlamalar geçerlidir:
- Varsayılan tahmin modeli, Prophet benzeri parçalı doğrusal ve mevsimsellik modelidir. Bu, sağlanan tek desteklenen tahmin yordamıdır.
- Hata iletileri Python UDTF altyapısı aracılığıyla teslim edilir ve Python izleme geri bilgilerini içerir. İzleme kaydının sonunda gerçek hata mesajı yer alır.