CDC с безопасными представлениями Snowflake
Есть ли способ включить потоки в представлениях, чтобы я мог отслеживать, что изменилось.
Пример сценария: обработка данных PII с помощью защищенных представлений путем создания двух представлений для каждой таблицы, например, таблица ORDERS содержит сведения о клиенте и сводку заказа, созданные представления: vw_Orders & vw_Orders_PII.
Как может последующий процесс, который не должен иметь доступа к данным PII, идентифицировать записи, которые были изменены?
Один из вариантов - это modifieddate, однако пытаетесь избежать этого, чтобы использовать встроенную функцию потоков для повышения эффективности?
1 ответ
Вы не можете создать поток вне представления; однако вы можете поместить поток в каждую из таблиц, составляющих представление. Затем вы можете создать представление этих потоков, чтобы скрыть столбцы PII. Не уверен, что это даст вам то, что вам нужно, но, надеюсь, дает некоторые идеи:
create or replace table a (id int, col1 string, PII string);
create or replace table b (id int, col1 string, PII string);
create or replace stream a_stream on table a;
create or replace stream b_stream on table b;
insert into a values (1, 'Non-PII data in table a', 'PII data');
insert into b values (1, 'Non-PII data in table b', 'PII data');
create or replace view stream_view as
select a.ID A_ID,
a.col1 A_COL1,
b.col1 B_COL1,
a.METADATA$ACTION A_METADATA$ACTION,
a.METADATA$ISUPDATE A_METADATA$ISUPDATE,
a.METADATA$ROW_ID A_METADATA$ROW_ID,
b.METADATA$ACTION B_METADATA$ACTION,
b.METADATA$ISUPDATE B_METADATA$ISUPDATE,
b.METADATA$ROW_ID B_METADATA$ROW_ID
from a_stream A left join b_stream B
on a.id = b.id;
select * from stream_view;