Вы можете получить доступ к параметрам конвейера в скриптах, используя $_
.
Допустим, у вас есть параметр конвейера executionId
.Затем для доступа к нему в скрипте вы можете выполнить $_executionId
.
. Ниже приведен тестовый конвейер.
со следующимпараметр трубопровода.
Ниже приведены данные испытаний.
Ниже приведен сценарий
# Import the interface required by the Script snap.
from com.snaplogic.scripting.language import ScriptHook
import java.util
class TransformScript(ScriptHook):
def __init__(self, input, output, error, log):
self.input = input
self.output = output
self.error = error
self.log = log
# The "execute()" method is called once when the pipeline is started
# and allowed to process its inputs or just send data to its outputs.
def execute(self):
self.log.info("Executing Transform script")
while self.input.hasNext():
try:
# Read the next document, wrap it in a map and write out the wrapper
in_doc = self.input.next()
wrapper = java.util.HashMap()
wrapper['output'] = in_doc
wrapper['output']['executionId'] = $_executionId
self.output.write(in_doc, wrapper)
except Exception as e:
errWrapper = {
'errMsg' : str(e.args)
}
self.log.error("Error in python script")
self.error.write(errWrapper)
self.log.info("Finished executing the Transform script")
# The Script Snap will look for a ScriptHook object in the "hook"
# variable. The snap will then call the hook's "execute" method.
hook = TransformScript(input, output, error, log)
Вывод:
Здесь вы можете видеть, что executionId
был прочитан изпараметры конвейера.
Примечание: Доступ к параметрам конвейера из сценариев является допустимым сценарием, но доступ к другим внешним системам из сценария является сложным (поскольку вам необходимо загрузить необходимые библиотеки), а нерекомендуемые.Используйте оснастки, предоставленные SnapLogic, для доступа к внешним системам.Кроме того, если вы хотите использовать другие библиотеки внутри скриптов, попробуйте придерживаться Javascript вместо того, чтобы переходить на python, потому что есть много CDN с открытым исходным кодом, которые вы можете использовать в своих скриптах.
Кроме того, вы не можетеполучить доступ к любой настроенной библиотеке выражений прямо из скрипта.Если вам нужна логика в сценарии, вы должны оставить ее в сценарии, а не где-то еще.И нет никакого смысла в доступе к именам учетных записей в сценарии (или средствах сопоставления), потому что, даже если вы знаете имя учетной записи, вы не можете использовать учетные данные / конфигурации, хранящиеся в этой учетной записи напрямую;это обрабатывается SnapLogic.Максимально используйте предоставленные привязки и сопоставления.
Обновление # 1
- Вы не можете получить доступ к учетной записи напрямую.Счета управляются и используются внутри оснастки.Вы можете создавать и настраивать учетные записи только через вкладку учетных записей соответствующей привязки.
- Старайтесь не использовать привязку сценария в максимально возможной степени;особенно, если вы можете сделать то же самое, используя обычные привязки.
Обновление # 2
Самое простое решение этого требования будет следующим.
- Чтение файла с помощью программы чтения файлов
- Разделение на основе
;
- Выполнение каждой команды SQL с использованием универсального JDBC-выполнения Snap