配置单元用户可以通过脚本流式传输表以转换数据:
ADD FILE replace-nan-with-zeros.py;
SELECT
TRANSFORM (...)
USING 'python replace-nan-with-zeros.py'
AS (...)
FROM some_table;
我有一个简单的python脚本:
# !/usr/bin/env python
import sys
kFirstColumns= 7
def main(argv):
for line in sys.stdin:
line = line.strip();
inputs = line.split('\t')
# replace NaNs with zeros
outputs = [ ]
columnIndex = 1;
for value in inputs:
newValue = value
if columnIndex > kFirstColumns:
newValue = value.replace('NaN','0.0')
outputs.append(newValue)
columnIndex = columnIndex + 1
print '\t'.join(outputs)
if __name__ == "__main__":
main(sys.argv[1:])
如何使kfirstcolumns成为这个python脚本的命令行或其他类型的参数?
谢谢您!
3条答案
按热度按时间xmakbtuz1#
有点老套,但您可以通过将参数作为附加列包含在查询中来传递它。
然后,当您分析脚本中的行时,第一列值将是您要查找的参数。只需将其弹出到局部变量中,即可将其从列值列表中删除。
希望有帮助。
zbsbpyhn2#
解决办法真的很琐碎。使用
而不仅仅是
对我来说很好。
python脚本应更改为:
w80xi6nr3#
好吧,你已经在做了。
你在抓我
sys.argv[1:]
并将其传递给main,但不使用参数。我建议(最简单的路线)将您的脚本更改如下:然后像这样运行脚本
然后,当需要执行更复杂的命令行选项时,可以查看argparse。