ai_top_drivers-Funktion

Gilt für:mit Häkchen markiert: Ja Databricks SQL mit Häkchen markiert: Ja Databricks Runtime

Important

Dieses Feature befindet sich in der Betaversion. Arbeitsbereichsadministratoren können den Zugriff auf dieses Feature über die Vorschauseite steuern. Siehe Manage Azure Databricks Previews.

ai_top_drivers() ist eine tabellenwertige Funktion für die Beitragsanalyse. Es ordnet Dimensionswerte oder Wertepaare, die am meisten zu einer Änderung einer Metrik zwischen einer Kontrollgruppe und einer Testgruppe beitragen. Siehe Argumente für verfügbare Argumente .

Anforderungen

  • Databricks Laufzeit 16.1 oder höher
  • Pro oder Serverless SQL Warehouse mit aktiviertem Photon oder ein Photon-fähiger Cluster in Databricks Runtime
  • Melden Sie Ihren Arbeitsbereich in der Vorschau der Predictive AI Functions an. Siehe Manage Azure Databricks Previews.

Syntax

ai_top_drivers(input => input, metric => metric, is_test => is_test
  [, optional_param ] [...])

optional_param:
  { dimensions => dimensions |
    aggregation => aggregation |
    min_support => min_support }

Argumente

Geben Sie alle Argumente beim Namen durch.

  • input ist der tabellenwertige Input zu analysieren. Stellen Sie eine Tabelle oder Unterabfrage mit der metrischen Spalte, den Dimensionsspalten und der Testlabel-Spalte bereit.
  • metric ist eine STRING Benennung der numerischen Spalte, die analysiert werden soll. Die Spalte muss einen numerischen Typ haben.
  • is_test ist eine STRING Benennung einer booleschen Spalte, die jede Zeile beschriftet. TRUE markiert die Testaufteilung und FALSE markiert die Kontrollaufteilung.
  • dimensions (optional) ist eine ARRAY<STRING> Spaltenbezeichnung zum Segmentieren. Numerische Spalten mit niedriger Kardinalität sind nach exakten Werten segmentiert. Numerische Spalten mit hoher Kardinalität werden automatisch in low, medium, und high Bereiche gruppiert. Wenn Sie dieses Argument weglassen, wählt die Funktion automatisch die obersten 20 korrelierten Dimensionsspalten aus der Eingabe aus.
  • aggregation (optional) ist eine STRING Benennung des Aggregats, auf das innerhalb jedes Segments angewendet metric werden soll. Unterstützte Werte sind sum, avg, count, minund max. Der Standardwert lautet sum.
  • min_support (optional) ist ein zwischen DOUBLE 0 und 1, das den minimalen Anteil analytierbarer Zeilen darstellt, den ein Segment abdecken muss, um in den Ergebnissen zu erscheinen. Der Standardwert lautet 0.05.

Rückkehr

Die Funktion liefert eine Tabelle mit folgenden Spalten:

  • contributor: Und ARRAY<STRING> das beschreibt das Segment. Jedes Element verwendet die Form column=value, zum Beispiel ["pickup_zip=high (>10044)"] oder ["pickup_zip=high (>10044)", "payment_type=CRD"].
  • metric_control: Die aggregierte Metrik für das Segment in der Kontrollgruppe (is_test = FALSE).
  • metric_test: Die aggregierte Metrik für das Segment in der Testgruppe (is_test = TRUE).
  • change: Der absolute Unterschied, metric_testmetric_control.
  • relative_change: Die Änderung als Bruchteil von metric_control.
  • support: Der Anteil der insgesamt analytierbaren Zeilen im Segment.

Die Ergebnisse umfassen eindimensionale Mitwirkende, Paare von Dimensionswerten und eine ["all"] Zeile, die die gesamte Population zusammenfasst.

Examples

Das folgende Beispiel vergleicht die gesamten Fahrpreiseinnahmen zwischen Januar und Februar 2016 und zeigt die Abhol-Postleitzahlenbereiche, die am meisten zur Änderung beitragen:

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

Das folgende Beispiel zählt Fahrten über die Abgabebereiche der Postleitzahlen zwischen denselben Zeiträumen:

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

Für die count Aggregation stellen Sie eine numerische Spalte zum Zählen bereit. Eine konstante Spalte wie wie 1 AS trip_count ist ein häufiges Muster.

Einschränkungen

Während der Beta gelten folgende Einschränkungen:

  • Zeilen mit einem NULL Wert in der Spalte metric oder is_test werden vor der Analyse weggelassen.
  • count distinct und median Aggregate werden nicht unterstützt.
  • MAP und STRUCT Dimensionsspalten werden nicht unterstützt. Numerische Kennzeichen wie Postleitzahlen und IDs werden als Größen behandelt und können in Bereiche gruppiert werden. Setze numerische Kennungen an, um STRING sie nach exaktem Wert zu segmentieren.