ai_top_drivers Fonction

S’applique à :case cochée oui Databricks SQL case cochée oui Databricks Runtime

Important

Cette fonctionnalité est en version bêta. Les administrateurs d’espace de travail peuvent contrôler l’accès à cette fonctionnalité à partir de la page Aperçus . Consultez Gérer les préversions d’Azure Databricks.

ai_top_drivers() est une fonction à valeurs de table pour l’analyse des contributions. Il classe les valeurs dimensionnelles, ou paires de valeurs, qui contribuent le plus à un changement d’une métrique entre un groupe contrôle et un groupe test. Voir Arguments pour les arguments disponibles.

Spécifications

  • Databricks Runtime 16.1 ou supérieur
  • Pro ou entrepôt SQL Serverless avec Photon activé, ou un cluster compatible Photon sur Databricks Runtime
  • Inscrivez votre espace de travail dans l’aperçu des fonctions d’IA prédictives . Consultez Gérer les préversions d’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 }

Arguments

Faites passer tous les arguments par nom.

  • input est l’entrée à valeurs de table à analyser. Fournissez un tableau ou une sous-requête avec la colonne métrique, les colonnes de dimension et la colonne de l’étiquette de test.
  • metric est un STRING nom de la colonne numérique à analyser. La colonne doit avoir un type numérique.
  • is_test est un STRING nom d’une colonne booléenne qui étiquete chaque ligne. TRUE marque la division test et FALSE la division de contrôle.
  • dimensions (optionnel) est un ARRAY<STRING> des noms de colonnes à segmenter. Les colonnes numériques de faible cardinalité sont segmentées par valeur exacte. Les colonnes numériques de haute cardinalité sont automatiquement regroupées en low, medium, et high plages. Si vous omets cet argument, la fonction sélectionne automatiquement les 20 premières colonnes de dimension corrélées de l’entrée.
  • aggregation (optionnel) est un STRING dénom de l’agrégat à appliquer metric au sein de chaque segment. Les valeurs prises en charge sont sum, avg, count, minet max. La valeur par défaut est sum.
  • min_support (optionnel) est un DOUBLE entre 0 et 1 représentant la fraction minimale de lignes analysables qu’un segment doit couvrir pour apparaître dans les résultats. La valeur par défaut est 0.05.

Returns

La fonction renvoie un tableau avec les colonnes suivantes :

  • contributor: Et ARRAY<STRING> qui décrit le segment. Chaque élément utilise la forme column=value, par exemple ["pickup_zip=high (>10044)"] ou ["pickup_zip=high (>10044)", "payment_type=CRD"].
  • metric_control: La métrique agrégée pour le segment du groupe témoin (is_test = FALSE).
  • metric_test: La métrique agrégée pour le segment du groupe de test (is_test = TRUE).
  • change: La différence absolue, metric_testmetric_control.
  • relative_change: Le changement en une fraction de metric_control.
  • support: La fraction totale des lignes analysables dans le segment.

Les résultats incluent des contributeurs monodimensionnels, des paires de valeurs dimensionnelles, et une ["all"] ligne qui résume la population complète.

Examples

L’exemple suivant compare le chiffre d’affaires total des tarifs entre janvier et février 2016 et identifie les plages de codes postaux pour la prise en charge qui contribuent le plus à ce changement :

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

L’exemple suivant compte les trajets à travers les plages de code postal de dépôt entre les mêmes périodes :

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

Pour l’agrégation count , prévoyez une colonne numérique à compter. Une colonne constante telle que 1 AS trip_count est un motif courant.

Limitations

Les limitations suivantes s’appliquent pendant la bêta :

  • Les lignes avec une NULL valeur dans la metric colonne ou is_test sont supprimées avant l’analyse.
  • count distinct et median les agrégats ne sont pas pris en charge.
  • MAP et STRUCT les colonnes de dimension ne sont pas prises en charge. Les identifiants numériques, tels que les codes postaux et les identifiants, sont considérés comme des quantités et peuvent être regroupés en plages. Castez les identifiants numériques pour STRING segmenter par valeur exacte.