Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:Endpoint de análise SQL no Microsoft Fabric e Warehouse no Microsoft Fabric
A APPROX_QUANTILE função devolve um quantil contínuo aproximado de valores nãoNULL numéricos. Pode usá-lo tanto como função agregada como função janela (analítica):
- Utilização agregada: Devolve o quantil aproximado solicitado para um grupo inteiro.
- Utilização da janela: Devolve o quantil aproximado solicitado para cada partição, preservando a saída ao nível da linha.
Transact-SQL convenções de sintaxe
Syntax
Sintaxe da função de agregação:
APPROX_QUANTILE ( numeric_literal , numeric_expression )
Sintaxe da função analítica:
APPROX_QUANTILE ( numeric_literal , numeric_expression ) OVER ( [ <partition_by_clause> ] )
Arguments
numeric_literal
O quantil a estimar. O valor deve estar no intervalo inclusivo de 0.0 até 1.0. Por exemplo, especifique 0.5 estimar a mediana ou 0.95 estimar o percentil 95.
numeric_expression
A expressão numérica cujo quantil aproximado é calculado. Os tipos numéricos exatos suportados são int, bigint, smallint, tinyint, numeric, decimal, smallmoney, , e money. Os tipos numéricos aproximados suportados são float e real.
Cláusula OVER
O partition_by_clause divide o conjunto de resultados produzido pela FROM cláusula em partições, e a função é aplicada a cada partição.
Se não especificares partition_by_clause, a função trata todas as linhas do conjunto de resultados da consulta como uma única partição.
A OVER cláusula não suporta ORDER BY, ROWS, nem RANGE para APPROX_QUANTILE.
Para mais informações, consulte a cláusula SELECT - OVER (Transact-SQL).
Tipos de devolução
Retorna float(53).
Remarks
APPROX_QUANTILE estima um quantil contínuo sobre os valores ordenados não deNULL entrada. Use QUANTILE quando precisar de um resultado exato.
Os resultados aproximados podem diferir ligeiramente dos resultados exatos QUANTILE e variar entre execuções devido a planos de execução e caminhos de fusão paralelos.
APPROX_QUANTILE é não determinística. Para obter mais informações, consulte Funções determinísticas e não determinísticas.
NULL os valores são ignorados. Se todos os valores de entrada forem NULL, ou se nenhuma linha qualificar, APPROX_QUANTILE retorna NULL. Quando ANSI_WARNINGS é ON, eliminar NULL valores produz o aviso agregado padrão.
APPROX_QUANTILE destina-se a reduzir a latência e o uso de memória em comparação com cálculos exatos QUANTILE em grandes conjuntos de dados.
DISTINCT não é suportado. Expressões de personagem, data, hora e data-hora não são suportadas.
A APPROX_QUANTILE função está disponível no Fabric Data Warehouse e no endpoint de análise SQL de Fabric itens. A APPROX_QUANTILE função não é suportada no SQL Server, Base de Dados SQL do Azure, Azure SQL Managed Instance ou base de dados SQL no Fabric.
Caso de uso
Use APPROX_QUANTILE para painéis de grande escala, análises exploratórias e relatórios agrupados onde uma estimativa próxima é suficiente. Por exemplo, estimar valores de p90 pedidos, p95 de latência de serviço ou p99 valores de telemetria sem o custo de um cálculo exato de quantil.
Examples
A. Calcular quantiles aproximados agregados
Este exemplo estima o primeiro quartil, mediana, terceiro quartil e 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. Calcule um quantil aproximado para cada grupo
Este exemplo estima o valor do 90.º percentil do sinistro para cada plano de seguro.
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. Devolver NULL para um grupo totalmente NULL
Este exemplo retorna NULL porque todos os valores qualificados são 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. Calcular um quantil aproximado de janela particionada
Este exemplo adiciona a latência aproximada do percentil 95 para cada serviço a cada linha de pedidos.
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;