Мне нужно удалить строки из таблицы. Операция удаления может иметь разные периоды ограничений и разные условия, тогда я хотел бы использовать хранимую процедуру для создания динамического c оператора удаления.
Условия оператора удаления сохраняются в виде таблицы следующее:
dataset.delete_conditions:
group lower_event_limit upper_event_limit
A. 2020-02-01 2020-02-10
B 2020-01-01 2020-01-03
C 2020-02-05 2020-02-07
Я хотел бы произвести что-то вроде этого:
CREATE PROCEDURE delete_irrelevant_data(s_group STRING, d_lower_event_limit DATE, d_upper_event_limit DATE)
BEGIN
IF d_lower_event_limit IS NOT NULL AND d_upper_event_limit IS NOT NULL
THEN
delete from data_set.fact_table
where date between d_lower_event_limit AND d_upper_event_limit
and group = s_group;
END IF;
END;
select
delete_irrelevant_data(group, lower_event_limit, upper_event_limit)
from
( select group,
lower_event_limit,
upper_event_limit
from dataset.delete_conditions
)
Это не работает. Я полагаю, что мне нужно использовать массив и l oop, но я не могу сформулировать его.