CD C со снежинкой Безопасный просмотр - PullRequest
0 голосов
/ 06 апреля 2020

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

Пример сценария: Обработка данных PII с защищенными представлениями путем создания двух представлений для таблицы Например, таблица ORDERS содержит информацию о клиенте и сводку заказа, поэтому создаются следующие представления: vw_Orders & vw_Orders_PII.

Как нижестоящий процесс, который не должен иметь доступа к данным PII, может идентифицировать записи, которые изменились?

Один вариант - это измененная дата, однако старается избегать его использования функция встроенных потоков для эффективности?

1 Ответ

1 голос
/ 06 апреля 2020

Вы не можете создать поток вне представления; однако вы можете поместить поток на каждую из таблиц, составляющих представление. Затем вы можете создать представление из этих потоков, чтобы скрыть столбцы 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;
...