Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:Koncový bod analýzy SQL v Microsoft Fabric a Warehouse v Microsoft Fabric
Funkce APPROX_QUANTILE vrací přibližný spojitý kvantil nečíselnýchNULL hodnot. Můžete ji použít jako agregační funkci i funkci okna (analýzy):
- Agregované použití: Vrátí požadovaný přibližný kvantil pro celou skupinu.
- Využití okna: Vrátí požadovaný přibližný kvantil pro každou partition při zachování výstupu na úrovni řádku.
Syntaxe
Syntaxe agregační funkce:
APPROX_QUANTILE ( numeric_literal , numeric_expression )
Syntaxe analytické funkce:
APPROX_QUANTILE ( numeric_literal , numeric_expression ) OVER ( [ <partition_by_clause> ] )
Argumenty
numeric_literal
Kvantil k odhadu. Hodnota musí být v inkluzivním rozsahu od 0.0 do 1.0. Například specifikujte 0.5 odhad mediánu nebo 0.95 95. percentilu.
numeric_expression
Číselný výraz, jehož přibližný kvantil je vypočítán. Podporované přesné numerické typy jsou int, bigint, smallint, tinyint, numeric, decimal, , smallmoneya .money Podporované přibližné numerické typy jsou float a .real
Klauzule OVER
Partition_by_clause rozdělí sadu výsledků vytvořenou FROM klauzulí na oddíly a funkce se použije na každý oddíl.
Pokud partition_by_clause nespecifikujete, funkce považuje všechny řádky z množiny výsledků dotazu jako jednu partition.
Klauzule OVER nepodporuje ORDER BY, ROWS, ani RANGE pro APPROX_QUANTILE.
Další informace naleznete v tématu SELECT - OVER klauzule (Transact-SQL).
Návratové typy
Vrátí float(53).
Remarks
APPROX_QUANTILE odhaduje spojitý kvantil přes uspořádané nevstupníNULL hodnoty.
Používejte QUANTILE, když potřebujete přesný výsledek.
Přibližné výsledky se mohou mírně lišit od přesných QUANTILE výsledků a mohou se lišit mezi prováděními kvůli plánům a paralelním cestám sloučení.
APPROX_QUANTILE je nedeterministické. Další informace naleznete v tématu Deterministické a nedeterministické funkce.
NULL hodnoty jsou ignorovány. Pokud jsou všechny vstupní hodnoty , NULLnebo pokud žádné řádky nesplňují podmínky, APPROX_QUANTILE vrátí NULL. Když ANSI_WARNINGS je , ONodstranění NULL hodnot vytváří standardní agregované varování.
APPROX_QUANTILE je určen ke snížení latence a využití paměti ve srovnání s přesnými QUANTILE výpočty na velkých datových sadách.
DISTINCT není podporováno. Znaky, datum, čas a datum a datum nejsou podporovány.
Funkce APPROX_QUANTILE je dostupná v Fabric Data Warehouse a jako SQL analytics endpoint Fabric položek. Tato APPROX_QUANTILE funkce není podporována v SQL Server, Azure SQL Database, Azure SQL Managed Instance ani v SQL databázi ve Fabric.
Případ použití
Použití APPROX_QUANTILE pro rozsáhlé dashboardy, průzkumnou analýzu a skupinové reportování, kde stačí přesné odhady. Například odhadnout částky pojistných událostí p90, latenci služby p95 nebo telemetrické hodnoty p99 bez nákladů na přesný kvantilový výpočet.
Examples
A. Výpočet agregovaných přibližných kvantilů
Tento příklad odhaduje první kvartil, medián, třetí kvartil a 95. percentil.
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. Vypočítat přibližný kvantil pro každou skupinu
Tento příklad odhaduje výši nároku na nárok v 90. percentilu pro každý pojistný plán.
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. Vrátit NULL pro skupinu složenou výhradně z NULL
Tento příklad vrací, NULL protože všechny kvalifikační hodnoty jsou 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. Vypočítejte rozdělené okno přibližně kvantilu
Tento příklad přidává přibližnou latenci 95. percentilu pro každou službu ke každému řádku požadavků.
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;