ai_top_drivers functie

Van toepassing op:gemarkeerd als ja Databricks SQL gemarkeerd als ja Databricks Runtime

Important

Deze functie bevindt zich in de bètaversie. Werkruimtebeheerders kunnen de toegang tot deze functie beheren vanaf de pagina Previews . Zie Azure Databricks previews beheren.

ai_top_drivers() is een tabelwaardige functie voor bijdrageanalyse. Het rangschikt dimensiewaarden, of paren van waarden, die het meest bijdragen aan een verandering in een metriek tussen een controlegroep en een testgroep. Zie Argumenten voor beschikbare argumenten .

Requirements

  • Databricks Runtime 16.1 of hoger
  • Pro of Serverless SQL warehouse met Photon ingeschakeld, of een Photon-geactiveerde cluster op Databricks Runtime
  • Schrijf je werkruimte in in de previewversie van Predictive AI Functions . Zie Azure Databricks previews beheren.

Syntax

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

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

Argumenten

Geef alle argumenten bij naam door.

  • input is de tabelwaarde invoer om te analyseren. Bied een tabel of subquery met de metriekkolom, dimensiekolommen en de testlabelkolom.
  • metric is een STRING naamgeving van de numerieke kolom die geanalyseerd moet worden. De kolom moet een numeriek type hebben.
  • is_test is een STRING naam van een booleaanse kolom die elke rij labelt. TRUE markeert de testsplitsing en FALSE markeert de controlesplitsing.
  • dimensions (optioneel) is een ARRAY<STRING> van kolomnamen om op te segmenteren. Numerieke kolommen met lage kardinaliteit zijn gesegmenteerd op exacte waarde. Numerieke kolommen met hoge kardinaliteit worden automatisch gegroepeerd in low, medium, en high bereiken. Als je dit argument weglaat, selecteert de functie automatisch de top 20 kolommen van gecorreleerde dimensies uit de invoer.
  • aggregation (optioneel) is een STRING naamgeving van het aggregaat waarop binnen elk segment wordt toegepast metric . Ondersteunde waarden zijn sum, avg, count, minen max. De standaardwaarde is sum.
  • min_support (optioneel) is een DOUBLE tussen 0 en 1, die het minimale aandeel analyseerbare rijen vertegenwoordigt dat een segment moet dekken om in de resultaten te verschijnen. De standaardwaarde is 0.05.

Returns

De functie geeft een tabel met de volgende kolommen terug:

  • contributor: En ARRAY<STRING> dat beschrijft het segment. Elk element gebruikt bijvoorbeeld de vorm column=value, ["pickup_zip=high (>10044)"]of ["pickup_zip=high (>10044)", "payment_type=CRD"] .
  • metric_control: De geaggregeerde metriek voor het segment in de controlegroep (is_test = FALSE).
  • metric_test: De geaggregeerde metriek voor het segment in de testgroep (is_test = TRUE).
  • change: Het absolute verschil, metric_testmetric_control.
  • relative_change: De verandering als een fractie van metric_control.
  • support: Het aandeel van de totale analyseerbare rijen in het segment.

De resultaten omvatten bijdragers uit één dimensie, paren van dimensiewaarden en een ["all"] rij die de volledige populatie samenvat.

Examples

Het volgende voorbeeld vergelijkt de totale tariefopbrengst tussen januari en februari 2016 en vindt de postcodebereiken die het meest bijdragen aan de verandering:

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

Het volgende voorbeeld telt reizen over afleverpostcodegebieden tussen dezelfde periodes:

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

Voor count aggregatie geef je een numerieke kolom om te tellen. Een constante kolom zoals is 1 AS trip_count een veelvoorkomend patroon.

Limitations

De volgende beperkingen gelden tijdens de bèta:

  • Rijen met een NULL waarde in de metric kolom of is_test worden verwijderd vóór de analyse.
  • count distinct en median aggregaten worden niet ondersteund.
  • MAP en STRUCT dimensiekolommen worden niet ondersteund. Numerieke identificaties, zoals postcodes en ID's, worden behandeld als hoeveelheden en kunnen worden gegroepeerd in bereiken. Gooi numerieke identificaties om STRING te segmenteren op exact de waarde.