Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:Microsoft Fabric'te SQL analiz uç noktası ve Microsoft Fabric'teki Ambar
Fonksiyon, APPROX_QUANTILE sayısal olmayanNULL değerlerden oluşan yaklaşık sürekli bir kuantili döndürür. Bunu hem toplama işlevi hem de pencere (analiz) işlevi olarak kullanabilirsiniz:
- Toplam kullanım: Tüm bir grup için istenen yaklaşık kuantili döndürür.
- Pencere kullanımı: Her bölüm için istenen yaklaşık kuantili döndürür ve satır düzeyindeki çıktıyı korur.
Transact-SQL söz dizimi kuralları
Syntax
Toplama işlevinin söz dizimi:
APPROX_QUANTILE ( numeric_literal , numeric_expression )
Analiz işlevinin söz dizimi:
APPROX_QUANTILE ( numeric_literal , numeric_expression ) OVER ( [ <partition_by_clause> ] )
Argümanlar
numeric_literal
Tahmin edilecek kanil. Değer, kapsayıcı aralıkta olmalıdır.0.01.0 Örneğin, medyan tahminini veya 0.95 95. perdelik dili tahmin etmeyi belirtin0.5.
numeric_expression
Yaklaşık quantili hesaplanan sayısal ifade. Desteklenen tam sayısal tipler int, bigint, smallint, tinyint, smallmoneynumericdecimal, , , , ve .money Desteklenen yaklaşık sayısal tipler ve real'dir.float
OVER yan tümcesi
partition_by_clause yan tümcesi tarafından FROM üretilen sonuç kümesini bölümlere ayırır ve işlev her bölüme uygulanır.
partition_by_clause belirtmezseniz, fonksiyon sorgu sonuç kümesinin tüm satırlarını tek bir bölüm olarak ele alır.
Bu OVER madde ORDER BY, ROWS, ya RANGE da için APPROX_QUANTILEdesteklemez.
Daha fazla bilgi için bkz. SELECT - OVER yan tümcesi (Transact-SQL).
Dönüş türleri
float(53) döndürür.
Remarks
APPROX_QUANTILE sıralı girdiNULL olmayan değerler üzerinde sürekli bir quantil tahmin eder. Kesin bir sonuç istediğinizde QUANTILE kullanın.
Yaklaşık sonuçlar, kesin QUANTILE sonuçlardan biraz farklı olabilir ve uygulama planları ile paralel birleştirme yolları nedeniyle uygulamalar arasında değişiklik gösterebilir.
APPROX_QUANTILE belirsiz değildir. Daha fazla bilgi için bkz. Deterministik ve deterministik olmayan fonksiyonlar.
NULL değerleri yoksayılır. Tüm girdi değerleri NULLise veya hiçbir satır uygun değilse, APPROX_QUANTILE döner NULL. Ne ANSI_WARNINGS zaman ON, değerleri ortadan NULL kaldırır ve standart toplam uyarı oluşturur.
APPROX_QUANTILE büyük veri kümelerindeki kesin QUANTILE hesaplamalara kıyasla gecikmeyi ve bellek kullanımını azaltmak amacıyla tasarlanmıştır.
DISTINCT desteklenmez. Karakter, tarih, saat ve tarih saati ifadeleri desteklenmiyor.
Fonksiyon, APPROX_QUANTILE Fabric Data Warehouse ve Fabric öğelerin SQL analitik uç noktasında mevcuttur. Bu APPROX_QUANTILE fonksiyon SQL Server, Azure SQL Veritabanı, Azure SQL Yönetilen Örneği veya SQL database in Fabric'te desteklenmemektedir.
Kullanım örneği
Büyük ölçekli dashboardlar, keşif analizleri ve yakın tahminin yeterli olduğu gruplanmış raporlama için kullanım APPROX_QUANTILE . Örneğin, p90 talep miktarlarını, p95 hizmet gecikmesini veya p99 telemetri değerlerini kesin bir quantil hesaplama maliyeti olmadan tahmin edin.
Examples
A. Toplam yaklaşik kuantilleri hesaplayın
Bu örnek, birinci dörtlük, medyan, üçüncü çeyrek ve 95. perdelik kısmı tahmin etmektedir.
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. Her grup için yaklaşık bir quantil hesaplayın
Bu örnek, her sigorta planı için yüzde 90'lık talep miktarını tahmin eder.
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. Tamamen NULL bir grup için NULL döndür
Bu örnek geri NULL dönür çünkü tüm nitelendirme değerleri 'dir.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. Bölünmüş bir pencere yaklaşık kuantili hesaplayın
Bu örnek, her hizmet için yaklaşık yüzde 95'lik gecikmeyi her istek satırına ekler.
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;