(1) Начиная с того, что у вас есть, сгруппируйте по линейке продуктов, чтобы получить этот год и прошлогодний доход в каждой строке:
#standardsql
with yearly_sales AS (
select year, product_line, sum(revenue) as revenue
from `dataset.sales`
group by product_line, year
),
year_on_year AS (
select array_agg(struct(year, revenue))
OVER(partition by product_line ORDER BY year
RANGE BETWEEN PRECEDING AND CURRENT ROW) AS data
from yearly_sales
)
(2) Рассчитайте годовой рост из двух значений, которые вы теперь имеете в каждой строке