материализованный вид и процедура в снежинке

#snowflake-cloud-data-platform

Вопрос:

Моя исходная таблица обновляется каждые 5 минут. Что является лучшим вариантом материализованного представления по сравнению с процедурой в snowflake

  1. Создавайте материализованный вид и обновляйте его каждые 5 минут.
  2. Создайте процедуру и расписание в задаче, которая будет выполняться каждые 5 минут.

если что-то пойдет не так при обновлении материализованного представления, как отследить ошибку? отслеживание ошибок легко выполняется внутри процедуры.

Какой из них лучше (материализованный вид или процедура/задача)?

Ответ №1:

Вы должны рассмотреть плюсы и минусы каждой реализации и, конечно же, стоимость.

Материализованный Вид

  • отлично подходит для источника, который не часто меняется
  • также подходит для доступа к содержимому, которое может иметь другую кластеризацию в исходной таблице
  • имеет стоимость хранения
  • действительно, с этим связаны бессерверные вычислительные затраты на поддержание MV
  • ограничивается одним источником таблиц, не объединяет и имеет другие ограничения с точки зрения доступных функций

Сохраненный Процесс

  • неисполненный код
  • отсутствие затрат на хранение
  • может комплектовать сложные соединения и функции
  • будет медленнее, чем MV, потому что ему нужно выполнить код
  • при необходимости периодически запускаться, может быть объединен с задачами или, еще лучше, потоками и задачами, если речь идет о дельтах.
  • один и тот же сохраненный процесс, выполняемый дважды без изменения каких-либо базовых данных, может воспользоваться преимуществами кэширования Snowflake
  • выполнение задачи не является бесплатным, входит в стоимость облачных сервисов. Но до тех пор, пока плата за CS составляет менее 10% от ежедневной платы за вычисление, она может быть бесплатной.

Подробное руководство: https://docs.snowflake.com/en/user-guide/views-materialized.html

Комментарии:

1. в случае ошибки при обновлении материализованного представления, как мы можем отслеживать ошибку, но то же самое мы можем сделать в хранимой процедуре snowflake. пожалуйста, предложите.

2.MV не выдаст вам ошибку, если только вы не нарушили правила определения MV. Однако для SP, если вы передадите все синтаксические правила, то ошибки могут быть определены вами с помощью обычного кода отслеживания ошибок с использованием JavaScript. Включение команд в TRY {} и другие процедуры обработки ошибок: docs.snowflake.com/en/sql-reference/…docs.snowflake.com/en/user-guide /…

Ответ №2:

В Snowflake материализованные представления поддерживаются автоматически, поэтому их не нужно обновлять вручную, и они всегда будут предоставлять обновленные данные.

https://docs.snowflake.com/en/user-guide/views-materialized.html#advantages-of-materialized-views

Как я понимаю, в качестве альтернативы MV вы планируете создать хранимую процедуру и задачу для самостоятельного построения сводной таблицы и периодически обновлять ее.

Если это так, я настоятельно рекомендую вам использовать Материализованное представление, чтобы вам не нужно было заниматься обслуживанием таблицы процедур/сводки, и вы всегда получали обновленные данные из MV.