美文网首页
python udf 心得

python udf 心得

作者: 叫兽吃橙子 | 来源:发表于2019-04-18 17:56 被阅读0次

概述

  • 准备了两个 python 的udf函数,对比总结一下,有利于自己下次自己使用。
  • 心得体会在上面,具体的对比过程在下面,想要看具体的过程往下翻

心得体会

1.基本模式
  • 引用sys模块;
  • 把数据按行进行导入处理
  • 删除开头和结尾的空白符(包括'\n', '\r', '\t', ' ')
import sys

for line in sys.stdin:
    detail = line.strip()
print '\t'.join([fname, str(l_name)])
2.不同处理方式
  • 两种不同的赋值模式
  • 第一种先确认分割后的值有两个再继续
  • 第二种没有核对分割后的值是否有两个,不管是否有值,都在继续处理
'方式一'
for line in sys.stdin:
    detail = line.strip().split("\t")
    if len(detail) != 2:
        continue
    else:
        name = detail[0]
        idcard = detail[1]

'方式二'
for line in sys.stdin:
        line = line.strip()
        fname , lname = line.split(' ')

对比过程

1.udf函数
  • 根据身份证识别男女
# -*- coding: utf-8 -*-
import sys

for line in sys.stdin:
    detail = line.strip().split("\t")
    if len(detail) != 2:
        continue
    else:
        name = detail[0]
        idcard = detail[1]
        if len(idcard) == 15:
            if int(idcard[-1]) % 2 == 0:
                print("\t".join([name,idcard,"女"]))
            else:
                print("\t".join([name,idcard,"男"]))
        elif len(idcard) == 18:
            if int(idcard[-2]) % 2 == 0:
                print("\t".join([name,idcard,"女"]))
            else:
                print("\t".join([name,idcard,"男"]))
        else:
            print("\t".join([name,idcard,"身份信息不合法!"]))
  • 把一列值,根据空格拆成两列
#!/usr/bin/python
 
import sys
 
for line in sys.stdin:
        line = line.strip()
        fname , lname = line.split(' ')
        l_name = lname.lower()
        print '\t'.join([fname, str(l_name)])
2.udf函数使用
  • 根据身份证识别男女
模版
SELECT TRANSFORM (<columns>)
USING 'python <python_script>'
AS (<columns>)
FROM <table>;

使用

select transform(name,idcard) USING 'python person.py'  AS (name,idcard,gender) from person;
  • 把一列值,根据空格拆成两列
模版
SELECT TRANSFORM(stuff)
USING 'script'
AS thing1, thing2
 
or
 
SELECT TRANSFORM(stuff)
USING 'script'
AS (thing1 INT, thing2 INT)

使用
select TRANSFORM (fname) USING "python iteblog.py" as (fname,lname) from zhengyuan.mytable;

相关文章

网友评论

      本文标题:python udf 心得

      本文链接:https://www.haomeiwen.com/subject/xeotgqtx.html