Подготовка и загрузка данных в ClickHouse
Для того чтобы в рамках ADCP была возможность работы с данными, данные должны быть загружены в ClickHouse, который в свою очередь подключается к ADCP.
Для того чтобы все компоненты системы работали корректно, необходимо исполнять следующие правила подготовки и загрузки данных в ClickHouse:
- В ClickHouse выделяются отдельные БД для:
- Публикуемых в Маркетплейсе данных,
- Результатов промышленного исполнения моделей из Cleanroom (после согласования скрипта поставщиками данных по итогам моделирования в DataLab).
- В качестве Engine таблиц использовать “MergeTree”
- В наименованиях объектов (БД / таблиц / полей) ClickHouse необходимо использовать символы только в нижнем регистре.
- Допускается использовать только скалярные типы данных из списка date, float32, float64, int8, int16, int32, int64, string, uint8, uint16, uint32, uint64. Любые древовидные структуры, массивы, географические типы использовать нельзя.
- Абсолютные суммовые значения предоставляются в виде диапазона значений. При этом в бизнес-глоссарии необходимо расшифровать значения диапазонов.
- Используется единый формат представления даты и времени ISO-8601:
- Дата. (пример: “2021-12-31“)
- Время. (пример: “18:25:10+03:00”)
- Дата и время. (пример: “2021-09-25T18:25:10+03:00”)
- Неопределенные (NULL) значения, значения филлеры, значения заглушки не допускаются. При отсутствии фактического значения необходимо записывать в датасет пустую строку.
Дополнительно для датасетов, которые планируется использовать для матчинга в витринах данных необходимо соблюсти следующие правила:
Каждая таблица, которая будет использована для матчинга в витринах (набор данных) должна обязательно включать атрибут матчинга «номер мобильного телефона» и признак согласия. Каждая таблица (набор данных) может включать в себя следующие дополнительные атрибуты матчинга:
- Фамилия;
- Имя;
- Отчество;
- Серия и номер паспорта;
- Дата рождения;
- E-mail;
- Пол;
- Номер телефона.
Должна обеспечиваться уникальность каждого атрибута. То есть при наличии, например, 2-х номеров мобильного телефона компания самостоятельно выбирает и указывает какой-либо 1 из них.
Все персональные данные хэшируются единым алгоритмом SHA512(data + “salt”), значение хэшей должно быть в нижнем регистре (LOWER CASE). Значение соли согласовывается компаниями-участниками отдельно. Предварительно значения должны быть приведены к каноническому формату. Пример скрипта хэширования
import hashlib
#Строчки для хеширования
lines = ["-", "_", "79126784576", "79146384571", "", "79274534324"]
hashedLines = []
salt = "p^4%<EQaz\"hs=aG4'(_utj2]V5uS+{2f"
fillers = ["", "-", "_"]
for str in lines:
if str in fillers:
hashedLines.append("")
else:
salted = str + salt
h = hashlib.new('sha512')
h.update(salted.encode())
hashedLines.append(h.hexdigest())
print(hashedLines)Таблица должна содержать признак согласия. Он не должен хэшироваться. Поле согласия должно быть формата UInt8 и должен принимать значение 1 или 0.
Требования к канонической модели данных:
Все данные перед хэшированием должны быть представлены в кодировке UTF-8.
Идентифицирующие атрибуты, используемые для сопоставления (матчинга) клиентов, перед хэшированием должны быть приведены к следующему формату:
a. Фамилия. Хэш от строки: UPPER CASE без пробелов и дополнительных символов, кроме дефиса. Например, "ИВАНОВ".
b. Имя. Хэш от строки: UPPER CASE без пробелов и дополнительных символов, кроме дефиса.
c. Отчество. Хэш от строки: UPPER CASE без пробелов и дополнительных символов, кроме дефиса
d. Номер мобильного телефона. Хэш от строки: номер телефона без +, без пробелов с кодом региона. Например, "79600667821".
e. Номер мобильного телефона. Хэш от строки: номер телефона без +, без пробелов с кодом региона. Например, "79600667821".
f. Серия и номер паспорта. Хэш от строки: серия номер без пробелов "8833285567".
g. Дата рождения. Хэш даты рождения "ГГГГ-ММ-ДД" - ISO-8601
h. Email. Хэш lower(trim(email)). Например, "someusermail@mail.com"
i. Пол. Хэш от строки с возможными значениями “m/f”.
Неопределенные (NULL) значения, значения филлеры, значения заглушки не допускаются. При отсутствии фактического значения необходимо записывать в датасет пустую строку.
Каждая компания-участник обмена данных самостоятельно обеспечивает выполнение вышеприведенных требований по подготовке собственных данных к публикации в платформу Vaultee.