首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以从Jython脚本更新Matillion DateTime变量吗?

可以从Jython脚本更新Matillion DateTime变量吗?
EN

Stack Overflow用户
提问于 2020-01-28 21:41:13
回答 1查看 744关注 0票数 0

我尝试将Python ( DateTime )组件的jython值传递给Python (Python3)组件,但似乎不起作用

存在一个类型为DateTime、默认值为2028-01-28 12:00:00的Matillion作业变量myvar

Jython代码如下:

代码语言:javascript
复制
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执行结束时,Jython的类型(str)错误

代码语言:javascript
复制
('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实例的变量。我想我必须将datetime转换回com.matillion.bi.emerald.server.scripting.MatillionDate,因为这似乎是Jython中的myvar类型。

问题是如何将datetime转换为MatillionDate

EN

回答 1

Stack Overflow用户

发布于 2020-03-04 02:56:49

我认为您看到的是字符串值,因为您正在使用变量的repr()函数。

我采用了您的示例,并添加了一些额外的行来说明我的意思。

代码语言:javascript
复制
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日期时间更新变量,这也很容易,因为得到的类型也是Java时间戳。

不过,为了回答您的问题,如果您将Matillion变量设置为str(myvar2)的值,您应该能够在之后访问Python3组件中相同/更新的值(作为datetime.datetime对象),而不需要创建另一个MatillionDate值。在使用Python3中的值时,这只需要进行另一种类型转换。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59950115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档