Я пытаюсь экспортировать данные Account и Opportunity, используя data loader из частичной песочницы в песочницу разработчика. В настоящее время проблема заключается в том, что в Opportunity Account есть поиск и обязательное поле.

До сих пор я пробовал следующие шаги

  1. Экспорт данных отдельно из partial sandbox для объектов Account и Opportunity

  2. Позже я создал external Id в developer sandbox для Account

  3. Вставьте данные в developer sandbox и сопоставьте external id с идентификатором Opportunity

Теперь я запутался, как бы я добавил сюда связанные объекты

Мне нужно экспортировать данные Account из developer sandbox, извлечь идентификатор учетной записи и добавить его в объект csv Opportunity?

1
Hunt 23 Апр 2020 в 15:36

2 ответа

Лучший ответ

Загрузчик данных

При импорте нескольких связанных объектов очень важно сохранить файлы успешного завершения, созданные загрузчиком данных. Это позволяет вам сопоставлять старые идентификаторы с новыми идентификаторами при заполнении полей поиска в нижестоящих объектах.

Например, вы загрузите учетные записи и получите файл успеха учетной записи. Затем во входном файле возможностей вы должны использовать конструкцию Excel, например VLOOKUP() или INDEX()/MATCH() (предпочтительнее), для сопоставления со старым идентификатором учетной записи в вашем Opportunity.AccountId к соответствующему новому идентификатору в только что загруженных данных.

Я всегда делаю это, поддерживая отдельный лист Excel всего с двумя столбцами: старый идентификатор слева, новый идентификатор справа. Я накапливаю эти данные из всех своих файлов успеха, чтобы сопоставить любой старый идентификатор, просто найдя его в этой таблице, которая вам понадобится, если вы работаете с полиморфными поисками, такими как Task.WhoId и Task.WhatId.

Использование файлов успеха для сопоставления старого идентификатора с новым идентификатором устраняет необходимость во внешних идентификаторах, хотя вы также можете использовать этот подход. Если вы используете внешние идентификаторы, вам может потребоваться изменить схему; каждый родительский объект должен иметь поле «Внешний идентификатор», значение которого вы указываете в строках дочернего объекта в CSV. Затем вы должны выполнить операцию Upsert, а не вставку, и загрузчик данных будет использовать поле External Id для выбора родительского отношения.

Другие инструменты

Отказ от ответственности: я являюсь автором этого бесплатного инструмента с открытым исходным кодом.

Amaxa (documentation) — многообъектный загрузчик данных, который я написал. Используя простой файл определения YAML, он может загружать подключенные объекты за одну операцию без необходимости ручного сопоставления. Определение нагрузки «Учетные записи и возможности» будет выглядеть примерно так:

version: 2
operation:
    -
        sobject: Account

        field-group: smart
        extract:
            all: True
    -
        sobject: Opportunity
        field-group: smart
        extract:
            descendents: True

Это позволит сначала загружать (или извлекать) учетные записи, а затем возможности и поддерживать отношения между ними.

3
David Reed 23 Апр 2020 в 16:15
Я использовал инструмент, который вы разработали, хотел знать, есть ли возможность ограничить количество записей с помощью LIMIT? для начала я хочу протестировать его с очень небольшим количеством данных
 – 
Hunt
24 Апр 2020 в 12:12
1
Вы можете использовать extract: query: <where clause>. (См. amaxa.readthedocs.io/en/latest/operations.html) . Если вы наберете LIMIT в конце, все должно работать нормально (например, query: Id != null LIMIT 10)
 – 
David Reed
24 Апр 2020 в 16:25
Я попробовал ваш инструмент, и он работает очень хорошо
 – 
Hunt
24 Апр 2020 в 17:00
Как установить Amaxa на Windows 10, нужно ли мне просто скачать amaxa_windows и запустить команду amaxa_windows.exe -c cred.yml operation.yml?
 – 
Hunt
31 Авг 2020 в 10:37
Да, это все, что вам нужно.
 – 
David Reed
31 Авг 2020 в 17:35

Для этой задачи я рекомендую Salesforce DX. Просто экспортируйте нужные записи с помощью:

sfdx force:data:tree:export -q "query" -p -u sourceOrg

Это дает вам набор файлов (что-то вроде Accounts.json, Opportunities.json и Opportunity.plan), которые вы затем можете импортировать в другую организацию:

sfdx force:data:tree:import p MyImport.plan -u destinationOrg

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

3
sfdcfox 23 Апр 2020 в 16:14
Мне нравится этот подход, так как он довольно удобен, но имеет ограничение в 200 записей.
 – 
Hunt
24 Апр 2020 в 09:27