(отправка от имени пользователя Snowflake - в надежде найти решение для ускорения разрешения)
Мы исследуем использование потоков для достижения медленно меняющегося измерения.
Следующие статьи были полезны, но мы ищем способ создать более полный захват изменений?
- https://www.snowflake.com/blog/building-a-type-2-slowly-changing-dimension-in-snowflake-using-streams-and-tasks-part-1/
- https://community.snowflake.com/s/article/Building-a-Type-2-Slowly-Changing-Dimension-in-Snowflake-Using-Streams-and-Tasks-Part-2
Рассмотрим этот пример:
1) Insert into MyTable row 1
2) Select * from StreamOfMyTable
<====== Возвращаетвставка, как и ожидалось </p>
3) Update MyTable where Row = 1
4) Select * from StreamOfMyTable
Показывает только чистое изменение, одну вставку, содержащую обновленные значения из шага 3. Если бы мы использовали поток здесь, у нас не было бы никакой возможности узнать, что строка 1 имела значения, заданные на шаге 1.
На шаге 4 мы хотели бы видеть в потоке обе исходные вставки вшаг 1 и обновление на шаге 3. Это позволяет нам создать более полный SCD типа 2, а не просто чистое изменение в то время, когда мыпотреблять поток с помощью операции DML.
Мы видели, как с помощью путешествия во времени мы могли бы создать новый StreamOfMyTableAtSpecificPointInTime, используя фразу "before (Statement => 'my query guid')". Но это кажется крайним, чтобы кодировать со всеми нашими таблицами. Есть ли более естественный способ захвата ВСЕХ изменений?
ПРИМЕЧАНИЕ:
Был задан вопрос "Зачем вам нужны предыдущие значениястроки для построения типа SCD 2. Вы должны просто иметь возможность слиться с вашим окончательным измерением на основе некоторого идентификатора и обновить предыдущую запись, чтобы «закрыть ее», верно? Предыдущие значения должны быть в вашем конечном измерении? »
Мой ответ: «Поток не содержит нескольких изменений в одной и той же строке, только сетевое изменение в нем. Попробуйте обновить строку более одного раза перед обработкой потока. Обратите внимание, что в потоке только окончательное значение. "
Любые рекомендации о том, как действовать?