適用於:
Databricks SQL
Databricks Runtime
Important
這項功能位於 測試版 (Beta) 中。 工作區管理員可以從 「預覽 」頁面控制對此功能的存取。 請參閱 管理 Azure Databricks 預覽。
ai_top_drivers() 是一個用於貢獻分析的表值函數。 它會對控制組與測試組之間指標變化貢獻最大的維度值或數值對進行排序。 請參閱「 論證」 以了解可用的論點。
需求
- Databricks 執行環境 16.1 或更高版本
- 啟用 Photon 的 Pro 或無伺服器 SQL 倉庫,或是 Databricks 執行環境上的支援 Photon 叢集
- 請在預測 AI 功能 預覽中註冊您的工作空間。 請參閱 管理 Azure Databricks 預覽。
Syntax
ai_top_drivers(input => input, metric => metric, is_test => is_test
[, optional_param ] [...])
optional_param:
{ dimensions => dimensions |
aggregation => aggregation |
min_support => min_support }
引數
把所有論點都以名字傳達。
-
input是要分析的表格值輸入。 提供一個包含度量欄、維度欄和測試標籤欄的表格或子查詢。 -
metric是STRING命名要分析的數值欄位。 欄位必須有數字類型。 -
is_test是STRING命名一個標記每一列的布林欄位。TRUE標記測試分段,標記FALSE控制分段。 -
dimensions(可選)是ARRAY<STRING>一組欄位名稱,供分段。 低基數數欄位依精確值分割。 高基數數欄位會自動分為low、medium和high區間。 如果你省略這個參數,函式會自動從輸入中選擇前 20 個相關的維度欄位。 -
aggregation(可選)是指STRING在每個區段內為要套用metric的聚合命名。 支援值為sum、avg、countmin、max和 。 預設值為sum。 -
min_support(可選)是介於0到1之間的 aDOUBLE,代表一段必須覆蓋的可分析行的最小比例,才能出現在結果中。 預設值為0.05。
Returns
該函式回傳一個包含以下欄位的表格:
-
contributor:描述ARRAY<STRING>該段落。 每個元素使用的形式column=value為 ,例如["pickup_zip=high (>10044)"]["pickup_zip=high (>10044)", "payment_type=CRD"]或 。 -
metric_control:對照組中該區段的聚合指標(is_test=FALSE)。 -
metric_test:測試組中該區段的彙總指標(is_test=TRUE)。 -
change:絕對差,metric_test−metric_control。 -
relative_change:變化為 的metric_control分數。 -
support:該段中可分析行總數的比例。
結果包括單維貢獻者、維度值對,以及 ["all"] 一列總結完整母體的資料。
Examples
以下範例比較了2016年1月至2月的總票價收入,並找出對變更貢獻最大的自取郵遞區號範圍:
WITH input AS (
SELECT
pickup_zip,
fare_amount,
CASE
WHEN DATE(tpep_pickup_datetime) BETWEEN '2016-01-01' AND '2016-01-31' THEN false
WHEN DATE(tpep_pickup_datetime) BETWEEN '2016-02-01' AND '2016-02-29' THEN true
ELSE NULL
END AS is_test
FROM samples.nyctaxi.trips
WHERE DATE(tpep_pickup_datetime) BETWEEN '2016-01-01' AND '2016-02-29'
)
SELECT *
FROM ai_top_drivers(
input => TABLE(input),
metric => 'fare_amount',
is_test => 'is_test',
dimensions => ARRAY('pickup_zip'),
aggregation => 'sum'
)
ORDER BY ABS(change) DESC
以下範例統計同一期間內不同投遞郵遞區號範圍的出行次數:
WITH input AS (
SELECT
dropoff_zip,
1 AS trip_count,
CASE
WHEN DATE(tpep_pickup_datetime) BETWEEN '2016-01-01' AND '2016-01-31' THEN false
WHEN DATE(tpep_pickup_datetime) BETWEEN '2016-02-01' AND '2016-02-29' THEN true
ELSE NULL
END AS is_test
FROM samples.nyctaxi.trips
WHERE DATE(tpep_pickup_datetime) BETWEEN '2016-01-01' AND '2016-02-29'
)
SELECT *
FROM ai_top_drivers(
input => TABLE(input),
metric => 'trip_count',
is_test => 'is_test',
dimensions => ARRAY('dropoff_zip'),
aggregation => 'count'
)
ORDER BY ABS(change) DESC
Note
彙 count 總時,提供一個數值欄位來計數。 像 這樣的 1 AS trip_count 恆定柱是常見的模式。
局限性
測試版期間有以下限制:
- 欄位中值
NULLmetric為 oris_test的列在分析前會被刪除。 -
count distinct且median不支援聚合。 -
MAPSTRUCT且不支援維度欄位。 數字識別碼,如郵遞區號和識別碼,被視為數量,並可分組到不同範圍。 將數字識別符鑄造為STRING精確值區段。