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;
Другие вопросы по тегам