У меня есть большой набор данных в Redshift, который моя компания поделится со студентами университета для анализа. Мне нужно замаскировать реальные номера счетов клиентов.
Я рассмотрел случайную функцию, но есть одна загвоздка: некоторые клиенты повторяются, поэтому мне нужно сохранить это, чтобы анализ был полезным. Кроме того, со случайным числом есть небольшая вероятность, что вы будете повторять номера счетов, верно?
Как бы вы этого добились? Создайте new_random_id. Он должен быть уникальным среди всех остальных в таблице (в таблице их более 4 миллионов), но должен быть таким же для тех строк, где фактический идентификатор учетной записи совпадает.
+-------------------+---------------+---------+
| actual_accound_id | new_random_id | status |
+-------------------+---------------+---------+
| 100 | 123 | new |
| 100 | 123 | upgrade |
| 200 | 249 | new |
| 300 | 401 | upgrade |
+-------------------+---------------+---------+
Я понимаю, что может сначала создать таблицу сопоставления, подобную приведенной ниже, а затем присоединиться к основной таблице, но это все еще не решает проблему возможного повторения новых случайных идентификаторов.
select distinct actual_account_id, cast(random()*1000000 as int) as new_random_id
into mapping_table
from t1;