Вы находитесь здесь:
Нормализация данных посредством сценария использования UNION
Нормализуйте данные, принятые в Data 360, посредством трансформаций потоковых данных.
Рассмотрим пример. Исходный объект озера данных CRMContacts содержит не более трех номеров телефонов для каждого клиента.
| CustomerId | Имя | MobilePhone | HomePhone | WorkPhone |
|---|---|---|---|---|
| C1 | Иван | 408-512-2234 | 650-342-4612 | |
| C2 | Питер | 310-453-3421 | 915-870-9900 |
Если объект озера данных CRMContacts напрямую соотнесен с объектом модели данных «Телефон точки контакта», можно соотнести только одну точку контакта — MobilePhone, HomePhone или WorkPhone. В результате, только один из трех номеров телефонов доступен в областях продуктов, использующих объект модели данных, например, вычисленные важные данные, разрешающая способность при опознавании и сегментация.
Ниже указан способ использования трансформации данных потоковой передачи для предоставления доступа ко всем трем номерам телефонов.
SELECT CONCAT(CRMContacts.CustomerId, "_Mobile") as PhoneId,
CRMContacts.CustomerId as CustomerId,
CRMContacts.MobilePhone as PhoneNumber,
"Mobile" as PhoneType
FROM CRMContacts
WHERE ISNOTNULL(CRMContacts.MobilePhone) AND CRMContacts.MobilePhone <> ""
UNION
SELECT CONCAT(CRMContacts.CustomerId, "_Home") as PhoneId,
CRMContacts.CustomerId as CustomerId, CRMContacts.HomePhone as PhoneNumber,
"Home" as PhoneType
FROM CRMContacts
WHERE ISNOTNULL(CRMContacts.HomePhone) AND CRMContacts.HomePhone <> ""
UNION
SELECT CONCAT(CRMContacts.CustomerId, "_Work") as PhoneId,
CRMContacts.CustomerId as CustomerId,
CRMContacts.WorkPhone as PhoneNumber,
"Work" as PhoneType
FROM CRMContacts
WHERE ISNOTNULL(CRMContacts.WorkPhone) AND CRMContacts.WorkPhone <> ""
После выполнения трансформации данных целевой ООД содержит одну запись для каждого типа номера телефона.
| PhoneId | CustomerId | PhoneNumber | PhoneType |
|---|---|---|---|
| C1_Mobile | C1 | 408-512-2234 | Мобильный |
| C1_Work | C1 | 650-342-4612 | Работа |
| C2_Home | C2 | 310-453-3421 | Главная |
| C2_Work | C2 | 915-870-9900 | Работа |
Потом можно соотнести целевой DLO телефонов с DMO телефона точки контакта. DMO телефона точки контакта теперь содержит все три номера телефонов для каждого клиента.
Чтобы использовать оператор UNION в трансформации потоковых данных, каждый оператор SELECT должен:
- Ссылайтесь на один исходный объект озера данных. В примере выше все три оператора
SELECTиспользуют один и тот же исходный объект озера данных CRMContacts. - Соотнесите с теми же полями для целевого ООД. Каждый оператор
SELECTдолжен использовать одинаковую схему. В нашем примере все три оператораSELECTсоотносятся с одним набором полей:PhoneId,CustomerId,PhoneNumberиPhoneType. - Создайте уникальное значение для поля основного ключа. Если неуникальные значения создаются для поля основного ключа, одно из неуникальных значений выбирается случайным образом. В нашем примере функция
CONCAT()создает уникальные значения для поля основного ключа в целевом ООД. - Соотнесите уникальное поле с основным ключом или набор полей с основным ключом в выражении.
UNION может использоваться с не более чем пятью операторами SELECT.
