APPROX_QUANTILE (Transact-SQL)

A következőkre vonatkozik:SQL Analytics-végpont a Microsoft Fabricben és a Microsoft Fabric warehouse-ban

A APPROX_QUANTILE függvény egy közelítő, folyamatos kvantilt nem-numerikusNULL értékeket ad vissza. Összesítő függvényként és ablakfüggvényként (analitikus) is használható:

  • Aggregált használat: Egy egész csoport számára a kért hozzávetőleges kvantilát adja vissza.
  • Ablakhasználat: Minden partícióhoz a kért közelítő kvantilát adja vissza, miközben megőrzi a sorszintű kimenetet.

Transact-SQL szintaxis konvenciók

Szemantika

Aggregációs függvény szintaxisa:

APPROX_QUANTILE ( numeric_literal , numeric_expression )

Elemzési függvény szintaxisa:

APPROX_QUANTILE ( numeric_literal , numeric_expression ) OVER ( [ <partition_by_clause> ] )

Arguments

numeric_literal

A kvantililát, amit becsülni kell. Az értéknek az inkluzív tartományban kell lennie .0.01.0 Például határozd 0.5 meg, hogy becsüljük meg a mediánt vagy 0.95 a 95. percentilistist.

numeric_expression

Az a numerikus kifejezés, amelynek közelítő kvantililiája számít. A támogatott pontos numerikus típusok , intbigint, smallint, tinyint, smallmoneynumericdecimal, és .money A támogatott közelítő numerikus típusok és floatreal.

OVER záradék

A partition_by_clause a záradék által FROM létrehozott eredményhalmazt partíciókra osztja, és a függvényt minden partícióra alkalmazza a rendszer.

Ha nem határozod meg partition_by_clause, a függvény a lekérdezés eredményhalmazának minden sorát egyetlen partícióként kezeli.

A OVER klauda nem támogatja ORDER BY, ROWS, vagy RANGE .APPROX_QUANTILE

További információ: SELECT – OVER záradék (Transact-SQL).

Visszatérési típusok

Visszatér float(53).

Remarks

APPROX_QUANTILE egy folyamatos kvantilt becsül a rendezett, nemNULL bemeneti értékek felett. Használd a QUANTILE-t , ha pontos eredményt szeretnél.

A közelítő eredmények kissé eltérhetnek a pontos QUANTILE eredményektől, és a végrehajtási tervek és párhuzamos összevonási útvonalak miatt eltérhetnek a végrehajtási tervek és a párhuzamos összeolvadási útvonalak miatt. APPROX_QUANTILE nemdeterminista. További információ: Determinisztikus és nem determinisztikus függvények.

NULL az értékek figyelmen kívül lesznek hagyva. Ha minden bemeneti érték , NULLvagy ha egyetlen sor sem minősül, APPROX_QUANTILE akkor visszaadja NULL. Amikor ANSI_WARNINGS az , ONaz értékek kizárása NULL a standard aggregált figyelmeztetést eredményezi.

APPROX_QUANTILE célja, hogy csökkentse a késleltetést és a memóriahasználatot a nagy adathalmazokon végzett pontos QUANTILE számításokhoz képest.

DISTINCT nem támogatott. A karakter, dátum, időpont és dátum kifejezések nem támogatottak.

A APPROX_QUANTILE funkció elérhető Fabric Data Warehouse-ben, valamint az SQL analitikai végpont Fabric elemekkel. Ez a APPROX_QUANTILE funkció nem támogatja az SQL Server-ben, Azure SQL Database-ban, Azure SQL Managed Instance-ban vagy az SQL database-ben a Fabric-ben.

Felhasználási eset

APPROX_QUANTILE Nagy léptékű irányítópultok esetén, feltáró elemzésekhez és csoportosított jelentésekhez, ahol egy közeli becslés elegendő. Például becsüljük meg a p90 igények összegét, a p95 szolgáltatási késleltetést vagy a p99 telemetriai értékeket pontos kvantilszámítás költsége nélkül.

Példák

A. Aggregált közelítő kvantilok kiszámítása

Ez a példa az első negyedet, mediánt, harmadik negyedet és a 95. percentilis becslését mutatja.

WITH Samples AS (
    SELECT *
    FROM (VALUES
        (1), (NULL), (2), (3), (4), (5), (6), (7), (8), (13)
    ) AS v(value)
)
SELECT
    APPROX_QUANTILE(0.25, value) AS ApproxQ1,
    APPROX_QUANTILE(0.50, value) AS ApproxMedian,
    APPROX_QUANTILE(0.75, value) AS ApproxQ3,
    APPROX_QUANTILE(0.95, value) AS ApproxP95
FROM Samples;

B. Kiszámoljunk egy közelítő kvantilt minden csoporthoz

Ez a példa minden biztosítási terv 90. percentilis kárigényének összegét becsüli.

WITH Claims AS (
    SELECT *
    FROM (VALUES
        ('Plan-A', 420.00),
        ('Plan-A', 500.00),
        ('Plan-A', 610.00),
        ('Plan-B', 250.00),
        ('Plan-B', 275.00),
        ('Plan-B', 310.00)
    ) AS v(plan_name, claim_amount)
)
SELECT
    plan_name,
    APPROX_QUANTILE(0.90, claim_amount) AS ApproxP90ClaimAmount
FROM Claims
GROUP BY plan_name;

C. Return NULL egy teljesen NULL csoporthoz

Ez a példa azért tér visszaNULL, mert minden minősítő érték .NULL

WITH CampaignDiscounts AS (
    SELECT *
    FROM (VALUES
        (9001, NULL),
        (9001, NULL),
        (9001, NULL),
        (9002, 10.00)
    ) AS v(campaign_id, discount_percent)
)
SELECT APPROX_QUANTILE(0.90, discount_percent) AS ApproxP90DiscountPercent
FROM CampaignDiscounts
WHERE campaign_id = 9001;

D. Számolj ki egy partíciós ablak közelítő kvantilát

Ez a példa minden kéréssorhoz hozzáadja minden szolgáltatás körülbelül 95. percentilis késleltetését.

WITH ServiceLatency AS (
    SELECT *
    FROM (VALUES
        ('Checkout', 'req-001', 180),
        ('Checkout', 'req-002', 220),
        ('Checkout', 'req-003', 260),
        ('Search', 'req-010', 90),
        ('Search', 'req-011', 110),
        ('Search', 'req-012', 130)
    ) AS v(service, request_id, latency_ms)
)
SELECT
    service,
    request_id,
    latency_ms,
    APPROX_QUANTILE(0.95, latency_ms) OVER (PARTITION BY service) AS ServiceApproxP95Latency
FROM ServiceLatency;