python udf 心得

概述

  • 准备了两个 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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容