Você está aqui:
Normalizar dados com o caso de uso UNION
Normalize os dados ingeridos no Data 360 com transformações de dados de streaming.
Vamos ver um exemplo. O objeto CRMContacts do data lake de origem contém até três números de telefone para cada cliente.
| CustomerId | Nome | MobilePhone | HomePhone | WorkPhone |
|---|---|---|---|---|
| C1 | John | 408-512-2234 | 650-342-4612 | |
| C2 | Peter | 310-453-3421 | 915-870-9900 |
Se o objeto de data lake CRMContacts estiver diretamente mapeado para o objeto de modelo de dados Telefone do ponto de contato, apenas um ponto de contato (MobilePhone ou HomePhone ou WorkPhone) poderá ser mapeado. Por isso, apenas um dos três números de telefone está disponível em áreas de produto que consomem o objeto de modelo de dados, como percepções calculadas, resolução de identidade e segmentação.
Veja como usar uma transformação de dados de streaming para disponibilizar todos os três números de telefone.
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 <> ""
Após a execução da transformação de dados, o DLO de destino contém um registro para cada tipo de número de telefone.
| PhoneId | CustomerId | PhoneNumber | PhoneType |
|---|---|---|---|
| C1_Mobile | C1 | 408-512-2234 | Dispositivo móvel |
| C1_Work | C1 | 650-342-4612 | Trabalho |
| C2_Home | C2 | 310-453-3421 | Início |
| C2_Work | C2 | 915-870-9900 | Trabalho |
Em seguida, você pode mapear o DLO de destino de Telefones para o DMO de Telefone do ponto de contato. Agora o DMO de Telefone do ponto de contato contém todos os três números de telefone para cada cliente.
Para usar o operador UNION em uma transformação de dados de streaming, cada instrução SELECT deve:
- Fazer referência ao mesmo objeto do data lake de origem. No exemplo acima, todas as três instruções
SELECTusam o mesmo objeto CRMContacts do data lake de origem. - Mapeie para os mesmos campos do DLO de destino. Cada instrução
SELECTdeve ter o mesmo esquema. Em nosso exemplo, todas as três instruçõesSELECTsão mapeadas para o mesmo conjunto de campos:PhoneId,CustomerId,PhoneNumberePhoneType. - Gere um valor exclusivo para o campo de chave primária. Se valores não exclusivos forem gerados para o campo de chave primária, um dos valores não exclusivos será selecionado aleatoriamente. Em nosso exemplo, a função
CONCAT()gerará valores exclusivos para o campo de chave primária no DLO de destino. - Tenha um campo exclusivo mapeado para uma chave primária ou um conjunto de campos mapeado para uma chave primária em uma expressão.
UNION pode ser usado com no máximo cinco instruções SELECT.
