Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL-analysslutpunkt i Microsoft Fabric och Warehouse i Microsoft Fabric
Funktionen returnerar APPROX_QUANTILE en ungefärlig kontinuerlig kvtil av icke-numeriskaNULL värden. Du kan använda den som både en aggregeringsfunktion och en funktion för fönster (analys):
- Aggregerad användning: Returnerar den begärda ungefärliga kvtilen för en hel grupp.
- Fönsteranvändning: Returnerar den begärda ungefärliga kvanten för varje partition samtidigt som radnivåutdata bevaras.
Transact-SQL syntaxkonventioner
Syntax
Syntax för sammansättningsfunktionen:
APPROX_QUANTILE ( numeric_literal , numeric_expression )
Analysfunktionssyntax:
APPROX_QUANTILE ( numeric_literal , numeric_expression ) OVER ( [ <partition_by_clause> ] )
Arguments
numeric_literal
Kvantilen att uppskatta. Värdet måste ligga i det inkluderande intervallet från 0.0 till .1.0 Till exempel, ange 0.5 att uppskatta medianen eller 0.95 95:e percentilen.
numeric_expression
Det numeriska uttrycket vars ungefärliga kvtil beräknas. Stödda exakta numeriska typer är int, , , smallint, tinyint, decimalnumeric, smallmoney, , och moneybigint. Stödda approximativa numeriska typer är float och real.
OVER-sats
Partition_by_clause delar upp resultatuppsättningen FROM som genereras av -satsen i partitioner och funktionen tillämpas på varje partition.
Om du inte specificerar partition_by_clause behandlar funktionen alla rader i frågeresultatuppsättningen som en enda partition.
Klausulen OVER stöder ORDER BYinte , ROWS, eller RANGE för APPROX_QUANTILE.
Mer information finns i SELECT - OVER-satsen (Transact-SQL).
Returtyper
Returnerar float(53).
Remarks
APPROX_QUANTILE uppskattar en kontinuerlig kvant över de ordnade icke-indatavärdenaNULL . Använd QUANTILE när du behöver ett exakt resultat.
Ungefärliga resultat kan skilja sig något från exakta QUANTILE resultat och kan variera mellan utföranden på grund av exekveringsplaner och parallella sammanslagningsvägar.
APPROX_QUANTILE är nondeterministisk. Mer information finns i deterministiska och icke-terministiska funktioner.
NULL värden ignoreras. Om alla indatavärden är NULL, eller om inga rader kvalificerar, APPROX_QUANTILE returnerar NULL. När ANSI_WARNINGS är ON, ger eliminering NULL av värden den standardiserade aggregerade varningen.
APPROX_QUANTILE är avsedd att minska latens och minnesanvändning jämfört med exakta QUANTILE beräkningar på stora datamängder.
DISTINCT stöds inte. Tecken-, datum-, tid- och datumtidsuttryck stöds inte.
Funktionen APPROX_QUANTILE finns tillgänglig i Fabric Data Warehouse och i SQL-analysändpunkten för Fabric objekt. Funktionen APPROX_QUANTILE stöds inte i SQL Server, Azure SQL Database, Azure SQL Managed Instance eller SQL Database in Fabric.
Användningsfall
Använd APPROX_QUANTILE för storskaliga instrumentpaneler, utforskande analyser och grupperad rapportering där en noggrann uppskattning är tillräcklig. Till exempel, uppskatta p90-kravbelopp, p95-servicelatens eller p99-telemetrivärden utan kostnaden för en exakt kvantilberäkning.
Examples
A. Beräkna aggregerade approximativa kvantiler
Detta exempel uppskattar första kvartilen, medianen, tredje kvartilen och 95:e percentilen.
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. Beräkna en ungefärlig kvtil för varje grupp
Detta exempel uppskattar det 90:e percentilbeloppet för skadeersättning för varje försäkringsplan.
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. Returnera NULL för en hel-NULL-grupp
Detta exempel returnerar NULL eftersom alla kvalificerande värden är 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. Beräkna en approximativ kvtil av ett partitionerat fönster
Detta exempel lägger till den ungefärliga 95:e percentilens latens för varje tjänst till varje förfrågningsrad.
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;