Лучшие практики для поддержания пользовательской таблицы в актуальном состоянии на основе данных, полученных из других баз данных Snowflake на нашем складе - PullRequest
1 голос
/ 15 октября 2019

(отправка от имени пользователя Snowflake)


У нас есть база данных, в которой хранятся необработанные данные из всех наших локальных источников. У моей команды есть своя собственная среда, в которой у нас есть полные права на создание стандартизированных каналов и / или таблиц / представлений и т. Д., Которые можно использовать в Power BI. Несколько дополнительных деталей:

  • Окончательные таблицы 'feed' получены из операторов SQL, и большинство из них получают из более чем одной таблицы наших 'необработанных' данных.
  • Необработанные данные таблицобновляется ежедневно.

Мой вопрос: какова наилучшая операция для полного обновления таблиц и каков стандартный рабочий процесс для этих операций? Наше текущее понимание, что один из этих процессов является лучшим:

  1. Использование COPY INTO <stage> затем COPY INTO <table>.
  2. Использование STREAMS для добавления дополнительных данных.
  3. Использование PIPES (может совпадать с STREAMS)
  4. Или упростить наши каналы для источников из одной таблицы и использовать материализованное представление.

Мы быв идеале следует избегать просмотра для повышения скорости потребления на уровне мощности. Рекомендовано


Tasks, так как это кажется подходящим вариантом, поскольку им нужно обновлять финальную таблицу только один раз в день. (https://docs.snowflake.net/manuals/sql-reference/sql/create-task.html)

Любые другие рекомендации ??? СПАСИБО!

1 Ответ

1 голос
/ 15 октября 2019

У нас есть похожий сценарий, в котором наши таблицы необработанных данных обновляются в реальном времени из файлов в S3. Эти необработанные таблицы загружаются через снежную трубу с помощью функции автоматической загрузки.

В свою очередь, у нас есть витрина данных, которая содержит факты о необработанных данных. Чтобы обновить витрину данных, мы создали потоки поверх необработанных таблиц для отслеживания изменений. Затем мы используем задачи, выполняемые с заданной периодичностью (в нашем случае каждые пять минут), чтобы обновить витрину данных из измененных данных в необработанных таблицах. Использование потоков позволяет нам ограничивать обработку только измененными данными, не отслеживая даты последнего обновления и т. Д.

...