Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Analytics-eindpunt in Microsoft Fabric en Warehouse in Microsoft Fabric
De APPROX_QUANTILE functie geeft een benaderende continue quantiel van niet-numeriekeNULL waarden terug. U kunt deze gebruiken als een statistische functie en een vensterfunctie (analysefunctie):
- Aggregaatgebruik: Geeft de gevraagde benaderende quantiel terug voor een hele groep.
- Venstergebruik: Geeft de gevraagde gevraagde benaderende quantiel terug voor elke partitie, terwijl de uitvoer op rijniveau behouden blijft.
Transact-SQL syntaxis-conventies
Syntax
Syntaxis van aggregatiefunctie:
APPROX_QUANTILE ( numeric_literal , numeric_expression )
Syntaxis van analysefunctie:
APPROX_QUANTILE ( numeric_literal , numeric_expression ) OVER ( [ <partition_by_clause> ] )
Argumenten
numeric_literal
De quantiel om te schatten. De waarde moet in het inclusieve bereik liggen van tot en met 0.01.0. Geef bijvoorbeeld aan 0.5 dat je de mediaan moet schatten of 0.95 het 95e percentiel.
numeric_expression
De numerieke uitdrukking waarvan de benaderde quantiel wordt berekend. Ondersteunde exacte numerieke types zijn int, bigint, , smallint, tinyint, smallmoneynumericdecimalen money. Ondersteunde benaderende numerieke types zijn float en real.
OVER-component
De partition_by_clause verdeelt de resultatenset die door de FROM component wordt geproduceerd in partities en de functie wordt toegepast op elke partitie.
Als je partition_by_clause niet specificeert, behandelt de functie alle rijen van de zoekresultatenset als één enkele partitie.
De OVER clausule ondersteunt ORDER BY, ROWS, of RANGE voor APPROX_QUANTILEniet.
Zie SELECT - OVER-component (Transact-SQL)voor meer informatie.
Retourtypen
Retourneert float(53).
Remarks
APPROX_QUANTILE schat een continue quantiel over de geordende niet-invoerwaardenNULL . Gebruik QUANTILE wanneer je een exact resultaat nodig hebt.
Berende resultaten kunnen enigszins verschillen van exacte QUANTILE resultaten en kunnen variëren tussen uitvoeringen door uitvoeringsplannen en parallelle samenvoegingspaden.
APPROX_QUANTILE is niet-deterministisch. Zie Deterministische en niet-deterministische functiesvoor meer informatie.
NULL waarden worden genegeerd. Als alle invoerwaarden zijn NULL, of als geen rijen kwalificeren, APPROX_QUANTILE geeft NULL. Wanneer ANSI_WARNINGS , ONproduceert het elimineren NULL van waarden de standaard aggregatiewaarschuwing.
APPROX_QUANTILE is bedoeld om latentie en geheugengebruik te verminderen in vergelijking met exacte QUANTILE berekeningen op grote datasets.
DISTINCT wordt niet ondersteund. Karakter-, datum-, tijd- en datum-tijd-expressies worden niet ondersteund.
De APPROX_QUANTILE functie is beschikbaar in Fabric Data Warehouse en het SQL-analyse-eindpunt van Fabric items. De APPROX_QUANTILE functie wordt niet ondersteund in SQL Server, Azure SQL Database, Azure SQL Managed Instance of SQL Database in Fabric.
Gebruiksituatie
APPROX_QUANTILE Gebruik voor grootschalige dashboards, verkennende analyses en gegroepeerde rapportages waar een nauwkeurige schatting voldoende is. Bijvoorbeeld, schat p90-claimbedragen, p95-servicelatentie of p99-telemetriewaarden zonder de kosten van een exacte kwantisatieberekening.
Examples
Eén. Bereken de geaggregeerde benaderende kwantielen
Dit voorbeeld schat het eerste kwartiel, mediaan, derde kwartiel en 95e percentiel.
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. Bereken een benaderende quantiel voor elke groep
Dit voorbeeld schat het claimbedrag van het 90e percentiel voor elk verzekeringsplan.
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. Geef NULL terug voor een all-NULL groep
Dit voorbeeld geeft terug NULL omdat alle kwalificerende waarden zijn 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. Bereken een gepartitioneerde venster-benadering van een quantiel
Dit voorbeeld voegt de ongeveer 95e percentiel latentie voor elke dienst toe aan elke verzoekrij.
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;