Динамическое выражение ADF — объединение / если отсутствует точка

#azure #azure-data-factory-2

#azure #azure-data-factory-2

Вопрос:

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

Ниже приведен код, который у меня есть в настоящее время, и я получаю ожидаемый результат

@concat('start ', if(equals(coalesce(pipeline().parameters.p_source_object.TYPE,''),'x'), 'a', 'b'))

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

@concat('start ', if(equals(coalesce(pipeline().parameters.p_source_object.TYPE,''),'x'), 'a', 'b'), )

Я получаю «недопустимую» ошибку с сообщением «Отсутствует точка». Если я поставлю точку перед запятой, ошибка исчезнет (но, очевидно, недопустимый синтаксис)

Чего он ожидает здесь?

В связи с этим, есть ли лучший способ объединения при одновременном выполнении некоторых функций, которые выводят строки? Это самый неинтуитивный интерфейс, который только можно себе представить (Microsoft, похоже, гордится этим смехотворным!)

Надеюсь, кто-нибудь сможет найти мое здравомыслие для меня!

Комментарии:

1. Я не уверен в «отсутствующем периоде», я никогда не видел этого раньше. Можете ли вы опубликовать снимок экрана? Для более сложных операций, подобных этой, я часто разбиваю его на несколько переменных только потому, что его может быть очень сложно визуально проанализировать. [Это особенно верно, когда ваша выходная строка содержит кавычки и запятые!] Поэтому я бы взял любое назначение уровня функции (например, if в вашем примере) и поместил его в свою собственную переменную. На этом этапе будет намного проще создать объединение: @concat(‘start’, переменные (‘someVar’), переменные (‘someOtherVar’)).

2. Будет сделано, когда я вернусь к этому, однако, что касается вашего комментария о переменных, я обсуждал этот путь, но у меня есть несколько таких «если», чтобы составить полную строку, которая мне нужна, и с бессмысленным способом установки переменных, это будет довольно сложно — если я непропустили лучший способ настройки переменных?

3. функция @RAB concat() должна устанавливать параметр после точки ‘,’ параметр не может быть нулевым. Подобная функция concat('a',) недопустима.

4. @LeonYue, я думаю, вы неправильно читаете проблему, я вообще не могу ввести другой параметр, потому что он ожидает точку (обратите внимание, точка — «.», а не «,»)

5. @RAB: я думаю, что параметр с «.» является проблемой. Можете ли вы просто попробовать использовать setvariable activity и попытаться присвоить параметр переменной, когда я тестировал его с ошибкой.

Ответ №1:

В конце концов, я полностью переработал его, избегая слоев… однако я обнаружил решение

@{concat('start ', if(equals(coalesce(pipeline().parameters.p_source_object.TYPE,''),'x'), 'a', 'b'), 'dd')}

Хотя это не относится к тому, как … в начале строки есть пробел, это перестает считаться «динамическим содержимым», но вместо этого используется интерполяция строк

Комментарии:

1. и на самом деле… кажется, что просто волнистые скобки действительно делают свое дело!