Вариант использования - я пытаюсь найти частоту покупок за неделю по набору данных. Теперь не у всех клиентов "события" происходят во все недели, и мне нужно было бы заполнить их нулевыми значениями для столбца "count".
Я пытался сделать это с помощью функции sequence Престо SQL. Однако для этого нужно, чтобы я сам получал значение максимальной недели из заказов клиента (я не хочу жестко кодировать это, поскольку результат будет переходить в инструмент BI, и я не хочу обновлять это вручную каждую неделю)
with all_orders_2020 as (select customer, cast(date_parse(orderdate, '%Y-%m-%d') as date) as order_date
from orders
where orderdate > '2020-01-01' and customer in (select customer from some_customers)),
orders_with_week_number as (select *, week(order_date) as week_number from all_orders_2020),
weekly_count as (select customer, week_number, count(*) as ride_count from orders_with_week_number
where customer = {{some_customer}} group by customer, week_number)
SELECT
week_number
FROM
(VALUES
(SEQUENCE(1,(select max(week_number) from weekly_count)))
) AS t1(week_array)
CROSS JOIN
UNNEST(week_array) AS t2(week_number)
Престо жалуется на это высказывание -
Unexpected subquery expression in logical plan: (SELECT "max"(week_number)
FROM
weekly_count
)
Есть какие-нибудь подсказки, как это можно сделать?