python - Matillion 网格变量未通过 updateGridVariable 更新
问题描述
我在作业中定义了一个 GridVariable(使用管理网格变量)。然后我有一个创建数据框的python代码。然后我将数据框的内容附加到一个数组中,然后更新我的网格变量。但是,当我将网格变量用于转换作业时,内容不会更新。
这是我的代码片段
for obj in objs:
s3file=s3_client.get_object(Bucket = 'somebucket', Key = obj.key)
tbl = pd.read_csv(s3file['Body'])
row_count=len(tbl.index)
for i in range(row_count) :
record=[]
record.append(tbl.at[i, 'a'])
record.append(tbl.at[i, 'b'])
record.append(tbl.at[i, 'c'])
record.append(tbl.at[i, 'd'])
record.append(tbl.at[i, 'e'])
record.append(tbl.at[i, 'f'])
record.append(tbl.at[i, 'g'])
record.append(tbl.at[i, 'h'])
record.append(tbl.at[i, 'i'])
record.append(tbl.at[i, 'j'])
record.append(tbl.at[i, 'k'])
record.append(tbl.at[i, 'l'])
record.append(tbl.at[i, 'm'])
record.append(tbl.at[i, 'n'])
record.append(tbl.at[i, 'o'])
record.append(tbl.at[i, 'p'])
record.append(tbl.at[i, 'q'])
record.append(tbl.at[i, 'r'])
record.append(tbl.at[i, 's'])
record.append(tbl.at[i, 't'])
record.append(tbl.at[i, 'u'])
record.append(tbl.at[i, 'v'])
record.append(tbl.at[i, 'w'])
record.append(tbl.at[i, 'x'])
record.append(tbl.at[i, 'y'])
record.append('something')
array.append(record)
context.updateGridVariable('somegridvar', array)
print(len(array))
arr2=context.getGridVariable('somegridvar')
print(len(arr2))
print(arr2)
print(len(arr2)) 行打印正确的记录数 print(arr2) 正确打印数组。
但是当我在转换中使用网格变量时,它不会在 python 脚本中加载记录。
解决方案
到目前为止看起来不错。在编排作业中,您已经获得了包含所需值的网格变量。
检查您如何将网格变量传递给转换作业?
最好的方法是使用运行转换跟随 Python 脚本组件,并使用设置网格变量属性将 somegridvar 映射到您在转换作业自己的网格变量中命名的列上。
您必须从 Orchestration Job 运行的同一个实例中执行此操作。如果您自己运行编排作业,然后稍后再自行运行转换作业,所有变量都将恢复为默认值。
推荐阅读
- c# - 致命:远程错误:需要验证码 - Bitbucket - Powershell 脚本
- java - 将在 netbeans 上创建的 JPanel 添加到另一个以编程方式创建的 Jpanel
- ios - 有时通知会导致 iOS 屏幕刚刚唤醒
- jenkins - 使用 Jenkins 环境变量自动生成作业名称?
- math - 将加速度计数据转换为对象空间
- google-data-studio - 在 Data Studio 中计算平均每周流量
- join - 在多个条件下加入每个条件结果
- apache-spark - Kafka Stream 到 Spark Stream python
- reporting-services - Windows 2016 服务器上的 SSRS 导出为 PDF 字符间距问题
- android - 平板电脑的通知集大图显示质量低