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:
Databricks SQL
Databricks Runtime 16.4 e superior
Devolve o valor agregado measure_column a partir dos valores de um grupo. No Databricks Runtime 18.1 e superiores, agg função agregado é sinónimo desta função.
Ao contrário de uma função de agregação regular como SUM, AVG, ou COUNT, a MEASURE função não especifica a agregação.
Ele herda a definição da agregação da definição de vista de métrica.
O uso de uma visualização métrica com medidas é superior às visualizações regulares porque abstrai a complexidade das agregações subjacentes, dando ao invocador a liberdade de escolher as colunas de agrupamento.
Sintaxe
measure ( measure_column ) [ FILTER ( WHERE cond ) ]
Esta função não pode ser invocada como uma função de janela usando a OVER cláusula.
Argumentos
measure_column: Uma referência a uma coluna de medida em uma exibição métrica.
cond: Uma expressão booleana opcional numa cláusula FILTER que filtra as linhas usadas para calcular a medida.Aplica-se a:
Databricks SQL,
Databricks Runtime 18.1 ou superiores
Devoluções
Um valor do tipo measure_column.
Comportamento da cláusula FILTER
Quando se aplica uma FILTER cláusula a uma medida, a condição de filtro é aplicada a todas as funções agregadas na definição da medida:
- Se uma função agregada na definição não
FILTERtiver cláusula, a condição da medida é aplicada a ela. - Se uma função agregada na definição já tiver uma
FILTERcláusula, a condição da medida é combinada com a existente usandoAND.
As mesmas regras aplicam-se recursivamente quando uma medida faz referência a outra medida.
Para as medidas janela, a FILTER cláusula é aplicada após a agregação de janelas, equivalente a colocar a mesma condição na cláusula da WHERE consulta.
Nas versões de Runtime do Databricks abaixo da 18.1, uma FILTER cláusula numa medida devolve um erro.
Exemplos
-- 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;