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.
Şunun için geçerlidir:
Databricks SQL
Databricks Runtime 16.4 ve üzeri
measure_column Bir grubun değerlerinden toplanan değeri döndürür. Databricks Runtime 18.1 ve sonraki sürümleri agg için toplama işlevi bu işlevin eş anlamlısıdır.
Diğer regular toplama işlevleri olan SUM, AVG, veya COUNT gibi, MEASURE işlevi toplamayı belirtmez.
Toplamanın tanımını ölçüm görünümü tanımından devralır.
Ölçüm görünümünü ölçülerle kullanmak, temel alınan toplamaların karmaşıklığını soyutlarken çağırana gruplandırma sütunlarını seçme özgürlüğü tanıdığından normal görünümlerden daha üstündür.
Sözdizimi
measure ( measure_column ) [ FILTER ( WHERE cond ) ]
Bu işlev, yan tümcesi kullanılarak OVER olarak çağrılamaz.
Tartışmalar
measure_column: Ölçüm görünümünde ölçü sütununa başvuru.
cond: Filter yan tümcesinde ölçüyü hesaplamak için kullanılan satırları filtreleyen isteğe bağlı boole ifadesi.Şunun için geçerlidir:
Databricks SQL
Databricks Runtime 18.1 ve üzeri
İade
türünde bir measure_column değer.
FILTER yan tümcesi davranışı
Bir ölçüye yan FILTER tümce uyguladığınızda, filtre koşulu ölçünün tanımındaki her toplama işlevine uygulanır:
- Tanımdaki bir toplama işlevinin yan tümcesi yoksa
FILTER, ölçünün koşulu buna uygulanır. - Tanımdaki bir toplama işlevinin zaten bir
FILTERyan tümcesi varsa, ölçünün koşulu kullanılarakANDmevcut işlevle birleştirilir.
Bir ölçü başka bir ölçüye başvurduğunda aynı kurallar özyinelemeli olarak uygulanır.
Pencere ölçüleri için yan tümcesi, FILTER sorgunun WHERE yan tümcesine aynı koşulu yerleştirmekle eşdeğer olan pencere toplamadan sonra uygulanır.
18.1'in altındaki Databricks Runtime sürümlerinde, ölçüdeki bir FILTER yan tümce bir hata döndürür.
Örnekler
-- A metric view with a measure column 4 metric columns
CREATE OR REPLACE VIEW region_sales_metrics
(month COMMENT 'Month order was made',
status,
order_priority,
count_orders COMMENT 'Count of orders',
total_Revenue,
total_Revenue_p_Customer,
total_revenue_for_open_orders)
WITH METRICS
LANGUAGE YAML
COMMENT 'A metric view for regional sales metrics.'
AS $$
version: 0.1
source: samples.tpch.orders
filter: o_orderdate > '1990-01-01'
dimensions:
- name: month
expr: date_trunc('MONTH', o_orderdate)
- name: status
expr: case
when o_orderstatus = 'O' then 'Open'
when o_orderstatus = 'P' then 'Processing'
when o_orderstatus = 'F' then 'Fulfilled'
end
- name: order_priority
expr: split(o_orderpriority, '-')[1]
measures:
- name: count_orders
expr: count(1)
- name: total_revenue
expr: SUM(o_totalprice)
- name: total_revenue_per_customer
expr: SUM(o_totalprice) / count(distinct o_custkey)
- name: total_revenue_for_open_orders
expr: SUM(o_totalprice) filter (where o_orderstatus='O')
$$;
-- Tracking total_revenue_per_customer by month in 1995
> SELECT extract(month from month) as month,
measure(total_revenue_per_customer)::bigint AS total_revenue_per_customer
FROM region_sales_metrics
WHERE extract(year FROM month) = 1995
GROUP BY ALL
ORDER BY ALL;
month total_revenue_per_customer
----- --------------------------
1 167727
2 166237
3 167349
4 167604
5 166483
6 167402
7 167272
8 167435
9 166633
10 167441
11 167286
12 167542
-- Tracking total_revenue_per_customer by month and status in 1995
> SELECT extract(month from month) as month,
status,
measure(total_revenue_per_customer)::bigint AS total_revenue_per_customer
FROM region_sales_metrics
WHERE extract(year FROM month) = 1995
GROUP BY ALL
ORDER BY ALL;
month status total_revenue_per_customer
----- --------- --------------------------
1 Fulfilled 167727
2 Fulfilled 161720
2 Open 40203
2 Processing 193412
3 Fulfilled 121816
3 Open 52424
3 Processing 196304
4 Fulfilled 80405
4 Open 75630
4 Processing 196136
5 Fulfilled 53460
5 Open 115344
5 Processing 196147
6 Fulfilled 42479
6 Open 160390
6 Processing 193461
7 Open 167272
8 Open 167435
9 Open 166633
10 Open 167441
11 Open 167286
12 Open 167542
-- Compare total revenue to revenue from fulfilled orders by month in 1995.
-- The FILTER condition is pushed down to the SUM aggregate in the total_revenue definition.
> SELECT extract(month from month) as month,
measure(total_revenue)::bigint AS total_revenue,
measure(total_revenue) FILTER (WHERE status = 'Fulfilled') AS fulfilled_revenue
FROM region_sales_metrics
WHERE extract(year FROM month) = 1995
GROUP BY ALL
ORDER BY ALL;