#salesforce #soql #salesforce-marketing-cloud
#salesforce #soql #salesforce-маркетинг-облако
Вопрос:
У меня возникла проблема с SOQL при выполнении запроса в Salesforce Marketing Cloud Automation Studio.
Я хочу обновить нулевые значения датами рождения пользователей в столбце с именем «дата рождения», который включает даты рождения тонны пользователей с типом данных = date.
Я хочу обновить этот столбец «дата рождения» на основе другого столбца с именем «дата рождения 2», который также включает даты рождения тонны пользователей, но вместо этого с помощью datatype = string .
Таким образом, моя цель — иметь возможность обновлять только отсутствующие поля даты в столбце «дата рождения», используя данные из столбца «дата рождения 2».
С помощью моего текущего очень простого кода (см. Изображение 1/2) я либо ничего не обновляю в расширении данных (когда добавляется столбец WHERE = NULL, см. Изображение 2), либо обновляю значения null, но также перезаписываю существующие значения даты в расширении данных (когда не добавлен столбец WHERE= NULL, см. Изображение 1). Интересно, можно ли просто обновить нулевые поля и оставить заполненные в данный момент поля?
С нетерпением жду вашего ответа и, пожалуйста, сообщите мне, если мой запрос неясен!
Комментарии:
1. Привет, Андреас, для получения дополнительных разъяснений по вашей проблеме, я предполагаю, что вы хотите обновить __ / 12 / 2020 (дата рождения) до 10/12/2020 (дата рождения), потому что ваш (дата рождения 2) содержит 10/12/2020 для этого пользователя, верно?
2. Привет, Ашиш, да, вы правы. В то же время я хочу убедиться, что я не перезаписываю некоторые из уже заполненных полей в (дата рождения) при обновлении столбца на основе (дата рождения 2). Скажите мне, если что-то неясно. Спасибо, что уделили мне время.
3. Привет, Андреас, спасибо за разъяснение еще одна вещь, которую я хочу спросить, это то, какой тип данных вы используете, это Date или DateTime
4. Привет, Ашиш, хороший вопрос. Мы используем тип данных Date, а не DateTime.
5. Привет, Андреас, пожалуйста, поправьте меня, если я ошибаюсь, если ваше поле (дата рождения) имеет тип даты, тогда, как оно может хранить пустое значение дня, месяца или года, оно должно выдавать исключение. Я предполагаю, что ваше поле (дата рождения) либо имеет значение, либо нет.
Ответ №1:
Итак, я думаю, вы можете запросить объект, где ваше поле (дата рождения) равно нулю, а (дата рождения 2) не равно нулю.
ВЫБЕРИТЕ (дата рождения),(дата рождения 2) ИЗ objectName, ГДЕ (дата рождения) = NULL И (дата рождения 2) != NULL
Пожалуйста, убедитесь, что ваше поле (дата рождения 2) должно быть в формате ГГГГ-ММ-ДД.
Пример кода.
List<objectName> li = [SELECT (date of birth),(date of birth 2) FROM objectName WHERE (date of birth) = NULL AND (date of birth 2) != NULL];
for(objectName o : li){
(date of birth) = Date.valueOf((date of birth2));
}
update li;
Комментарии:
1. Привет, Ашиш, это похоже на код Apex, запускающий SOQL (поправьте меня, если я ошибаюсь), однако я не могу выполнить Apex в Automation Studio в SFMC. Либо я могу использовать SOQL, либо (на стороне сервера) Javascript -> возможно ли выполнить такое действие исключительно с помощью SOQL (действие SQL) или Javascript (действие скрипта)?