Можно ли обновить переменную Matillion Job DateTime из сценария Jython? - PullRequest
0 голосов
/ 28 января 2020

Я пытаюсь передать значения DateTime из компонента Python (jython) в компонент Python (python 3), но, похоже, он не работает

Matillion Orchestraton Job

Существует переменная задания Matillion myvar с типом DateTime и значением по умолчанию 2028-01-28 12:00:00

Код Jython выглядит следующим образом:

from dateutil.parser import parse
from datetime import timedelta  

print('class', myvar.getClass())
myvar = parse(str(myvar.toInstant())).replace(tzinfo=None)
print('myvar', repr(myvar))
myvar2 = myvar + timedelta(days=1)
print('myvar2', repr(myvar2))
context.updateVariable('myvar', myvar2)
print('myvar',  repr(myvar))

Я уже вижу, что myvar имеет неверный тип (str), конец выполнения Jython

('class', <type 'com.matillion.bi.emerald.server.scripting.MatillionDate'>)
('myvar', 'datetime.datetime(2028, 1, 28, 12, 0)')
('myvar2', 'datetime.datetime(2028, 1, 29, 12, 0)')
('myvar', u'2028-01-29 12:00:00.0')

Я предполагаю, что не могу обновить переменную, передавая datetime пример. Я думаю, что я должен преобразовать дату и время обратно в com.matillion.bi.emerald.server.scripting.MatillionDate, поскольку это похоже на myvar внутри Jython.

Вопрос в том, как мне преобразовать дату и время в MatillionDate?

1 Ответ

0 голосов
/ 03 марта 2020

Я думаю, что вы видите строковое значение, потому что вы используете функцию repr () переменной.

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

from datetime import datetime
print('myvar',  type(myvar))
context.updateVariable('myvar', datetime.now())
print('myvar', myvar)
print('myvar', type(myvar))

Вы можете видеть, что 'type' на самом деле является Java меткой времени, что имеет смысл, потому что Jython выполняется в JVM. Вы можете так же легко обновить переменную с Python datetime, где результирующий тип также будет Java Timestamp.

Чтобы ответить на ваш вопрос, однако, если вы установите для переменной Matillion значение str (myvar2), вы сможете получить доступ к тому же / обновленному значению в компоненте Python3 впоследствии (в качестве даты и времени). объект datetime), без необходимости создания другого значения MatillionDate. Это просто потребует еще одного преобразования типа при использовании этого значения из Python3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...