Loading
CRM Analytics
Трансформация flatten

Трансформация flatten

Трансформация flatten выравнивает иерархические данные. Например, пользователь может выровнять иерархию ролей Salesforce для применения параметров безопасности строки к набору данных на основе иерархии ролей.

Примечание
Примечание Выровняйте иерархию перед присоединением к наборам данных. Например, если вы хотите выровнять иерархию в данных, объединенных из объектов «Организация» и «Возможность», выровняйте набор данных «Организация» перед присоединением к набору данных «Возможность». Если вы выровняете после объединения, трансформация не создаст ожидаемых данных выравнивания иерархии.

При настройке трансформации flatten для выравнивания иерархии рекомендуем задать поле, содержащее каждый узел иерархии, и поле, содержащее соответствующего родителя на основе иерархии. Трансформация flatten генерирует одну запись для каждого узла иерархии, который мы называем self-ID. Каждая запись содержит два созданных столбца, которые хранят иерархию для каждого узла self-ID. Один столбец содержит список всех предшественников (через запятую) для каждого узла иерархии. Другой столбец содержит иерархический путь.

Чтобы определить способ хранения предшественников, просмотрите последние два столбца указанного ниже выровненного набора данных.

Код роли (собственный код) Имя роли Код родительской роли Роли RolePath
1 Торговый представитель 1 10 10, 20, 30 \10\20\30
2 Торговый представитель 2 10 10, 20, 30 \10\20\30
3 Торговый представитель 3 11 11, 20, 30 \11\20\30
10 Региональный менеджер 1 20 20, 30 \20\30
11 Региональный менеджер 2 20 20, 30 \20\30
20 Вице-президент 1 30 30 \30
21 Вице-президент 2 30 30 \30
30 Генеральный директор Не применимо Не применимо Не применимо

Можно также настроить трансформацию flatten, чтобы включить собственный узел кода в генерированные столбцы иерархии. В следующем наборе данных собственный код выделен жирным шрифтом.

Код роли (собственный код) Имя роли Код родительской роли Роли RolePath
1 Торговый представитель 1 10 1, 10, 20, 30 \1\10\20\30
2 Торговый представитель 2 10 2, 10, 20, 30 \2\10\20\30
3 Торговый представитель 3 11 3, 11, 20, 30 \3\11\20\30
10 Региональный менеджер 1 20 10, 20, 30 \10\20\30
11 Региональный менеджер 2 20 11, 20, 30 \11\20\30
20 Вице-президент 1 30 20, 30 \20\30
21 Вице-президент 2 30 21, 30 \21\30
30 Генеральный директор Не применимо 30 30

Для корректного функционирования выравнивания:

  • В данных иерархии не может быть циклической зависимости, то есть родительский узел не может указывать на дочерний узел в качестве родительского.
  • Иерархия должна быть полной, то есть каждый дочерний узел должен иметь родительский узел.

Например, значения «Роль» и «Путь роли» не вычисляются:

  • Для вице-президента 1, регионального менеджера 1 и торгового представителя 1, когда торговый представитель 1 подчиняется региональному менеджеру 1, который подчиняется вице-президенту 1, который подчиняется торговому представителю 1, поскольку иерархия имеет циклическую зависимость.
  • Для Salesperson 1 и Salesperson 2, если региональный менеджер 1 не присутствует в наборе данных, поскольку иерархия не завершена.
Пример
Пример

Рассмотрим пример ниже. Требуется создать набор данных, содержащий все возможности. Каждая возможность должна быть дополнена сведениями о пользователе и роли для ответственного за возможность. Кроме того, применение параметров безопасности строки на основе иерархии ролей требует наличия списка всех вышестоящих предшественников в каждой записи возможности. Чтобы создать список предшественников, воспользуйтесь трансформацией flatten для выравнивания иерархии ролей.

Создайте файл определения потока данных ниже.


{
"Extract_Opportunity": {
   "action": "sfdcDigest",
   "parameters": {
      "object": "Opportunity",
      "fields": [
         { "name": "Id" },
         { "name": "Name" },
         { "name": "Amount" },
         { "name": "StageName" },
         { "name": "AccountId" },
         { "name": "OwnerId" }
      ]
   }
},
"Extract_User": {
   "action": "sfdcDigest",
   "parameters": {
      "object": "User",
      "fields": [
         { "name": "Id" },
         { "name": "Name" },
         { "name": "Department" },
         { "name": "UserRoleId" }
      ]
   }
},
"Extract_UserRole": {
   "action": "sfdcDigest",
   "parameters": {
      "object": "UserRole",
      "fields": [
         { "name": "Id" },
         { "name": "Name" },
         { "name": "ParentRoleId" }
      ]
   }
},
"Flatten_UserRole": {
   "action": "flatten",
   "parameters": {
      "source": "Extract_UserRole",
      "self_field": "Id",
      "parent_field": "ParentRoleId",
      "multi_field": "Roles",
      "path_field": "RolePath",
      "include_self_id":false
   }
},
"Augment_User_FlattenUserRole": {
   "action": "augment",
   "parameters": {
      "left": "Extract_User",
      "left_key": [ "UserRoleId" ],
      "relationship": "Role",
      "right": "Flatten_UserRole",
      "right_key": [ "Id" ],
      "right_select": [ 
         "Id",
         "Name",
         "Roles",
         "RolePath"
      ]
   }
},
"Augment_Opportunity_UserWithRoles": {
   "action": "augment",
   "parameters": {
      "left": "Extract_Opportunity",
      "left_key": [ "OwnerId" ],
      "right": "Augment_User_FlattenUserRole",
      "relationship": "Owner",
      "right_select": [
         "Name",
         "Department",
         "Role.Id",
         "Role.Name",
         "Role.Roles",
         "Role.RolePath"
      ],
      "right_key": [ "Id" ]
   }
},
"Register_OpportunityWithRoles_Dataset": {
   "action": "sfdcRegister",
   "parameters": {
      "alias": "OppRoles",
      "name": "OppRoles",
      "source": "Augment_Opportunity_UserWithRoles",
      "rowLevelSecurityFilter": "'Owner.Role.Roles' == \"$User.UserRoleId\" || 'OwnerId'
== \"$User.Id\""
   }
}
}

Чтобы выровнять иерархию ролей Salesforce, трансформация flatten использует указанные ниже поля ввода из объекта UserRole.

  • Код: определяет каждый узел в иерархии ролей Salesforce.
  • ParentRoleId: ParentRoleId определяет родителя согласно иерархии ролей.

После прохождения каждой взаимосвязи «родитель-дочерняя» в объекте UserRole трансформация flatten создает одну запись для каждого кода роли. Каждая запись содержит все роли предшественника для каждой роли в иерархии. Трансформация flatten генерирует два выходных столбца для хранения всех ролей предшественников для каждой роли.

 
Загрузка
Salesforce Help | Article