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:
Databricks SQL
Databricks Runtime 16.4 en hoger
Retourneert de measure_column aggregatie afkomstig van de waarden van een groep. In Databricks Runtime 18.1 en hoger agg is de statistische functie een synoniem voor deze functie.
In tegenstelling tot een reguliere statistische functie zoals SUM, AVGof COUNT, geeft de MEASURE functie de aggregatie niet op.
De definitie van de aggregatie wordt overgenomen van de definitie van de metrische weergave.
Het gebruik van een metrische weergave met metingen is beter dan normale weergaven, omdat hiermee de complexiteit van de onderliggende aggregaties wordt geabstraheerd terwijl de aanroeper de vrijheid krijgt om de groeperingskolommen te kiezen.
Syntaxis
measure ( measure_column ) [ FILTER ( WHERE cond ) ]
Deze functie kan niet worden aangeroepen als een vensterfunctie met behulp van de OVER component.
Argumenten
measure_column: Een verwijzing naar een metingkolom in een metrische weergave.
cond: Een optionele Booleaanse expressie in een FILTER-component waarmee de rijen worden gefilterd die worden gebruikt om de meting te berekenen.Van toepassing op:
Databricks SQL
Databricks Runtime 18.1 en hoger
Retouren
Een waarde van het type measure_column.
GEDRAG VAN FILTER-component
Wanneer u een FILTER component toepast op een meting, wordt de filtervoorwaarde toegepast op elke statistische functie in de definitie van de meting:
- Als een statistische functie in de definitie geen
FILTERcomponent heeft, wordt de voorwaarde van de meting hierop toegepast. - Als een statistische functie in de definitie al een
FILTERcomponent heeft, wordt de voorwaarde van de meting gecombineerd met de bestaande met behulp vanAND.
Dezelfde regels gelden recursief wanneer een meting verwijst naar een andere meting.
Voor venstermetingen wordt de FILTER component toegepast na de vensteraggregatie, gelijk aan het plaatsen van dezelfde voorwaarde in de component van WHERE de query.
In Databricks Runtime-versies lager dan 18.1 retourneert een FILTER component voor een meting een fout.
Voorbeelden
-- 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;