当前位置: 首页 > news >正文

高清图片素材网站推荐海珠区网站建设

高清图片素材网站推荐,海珠区网站建设,中国建设网网站,潍坊学校网站建设本人因为工作原因,经常使用hive以及presto,一般是编写hive完成工作,服务器原因,presto会跑的更快一些,所以工作的时候会使用presto验证结果,所以就要频繁hive转presto,为了方便,我用…

        本人因为工作原因,经常使用hive以及presto,一般是编写hive完成工作,服务器原因,presto会跑的更快一些,所以工作的时候会使用presto验证结果,所以就要频繁hive转presto,为了方便,我用Python编写了一个转换代码的小程序,工作繁忙,我一点点更新吧。

一、厘清需求        

        首先,思考具体的需求:

  1. 识别加减乘除等基本运算,presto对于字段属性有严格要求,所以为了一劳永逸,将涉及到计算的字段全部cast为double,但是要注意字符串中出现运算符的,这是不能改的。
  2. 识别<,>,<>,!=,=,<=,>=这些判断符一般用在条件语句,where,join中。以a=b为例(1)a是字段,b是一个字符串,那么a就要cast为varchar,并且b不需要任何cast(2)如果b是数值,那么a要cast为double,并且b不需要任何cas(3)如果b和时间有关,那么a就要case为date(4)如果两边都是字段,那就都cast为varchar。
  3. 常用的一些函数,比如substr,datediff,concat,sum等等,都要转换成对应的presto函数用法。
  4. 使用tkinter创造一个简单的交互界面,方便实时的输入输出,如果有错误就简单的反应错误。

二、代码思路

        先处理加减乘除运算,判断符,然后再处理函数,然后添加ui交互界面,最后将代码简单包装为类,条件允许就包装为应用程序,但是公司电脑权限高,所以不太可行。

三、Python代码

import re
import os
from tkinter import *class Hive2Presto:def __int__(self):self.t_funcs = ['substr', 'nvl', 'substring', 'unix_timestamp'] + \['to_date', 'concat', 'sum', 'avg', 'abs', 'year', 'month', 'ceiling', 'floor']self.time_funcs = ['date_add', 'datediff', 'add_months']self.funcs = self.t_funcs + self.time_funcsself.current_path = os.path.abspath(__file__)self.dir = os.path.dirname(self.current_path)self.result = []self.error = []self.filename = ''def main(self):self.root = Tk()self.root.config(bg='#ff741d')  # 背景颜色设置为公司主题色^_^self.root.title('Hive转Presto')self.win_width = 550self.win_height = 500self.screen_width = self.root.winfo_screenwidth()self.screen_height = self.root.winfo_screenheight()self.x = (self.screen_width - self.win_width) // 2self.y = (self.screen_height - self.win_height) // 2self.root.geometry(f'{self.win_width}x{self.win_height}+{self.x}+{self.y}')font = ('楷体', 11)self.button = Button(self.root, text='转换', command=self.trans, bg='#ffcc8c', font=font, anchor='e')self.button.grid(row=0, column=0, padx=100, pady=10, sticky=W)self.file_button = Button(self.root, text='选择文件', command=self.choose_file, bg='#ffcc8c', font=font,anchor='e')self.file_button.grid(row=0, column=1, padx=0, pady=10, sticky=W)self.entry = Entry(self.root, width=65, font=font)self.entry.insert(0, '输入Hive代码')self.entry.grid(row=1, column=0, padx=10, pady=10, columnspan=2)self.entry.bind('<Button-1>', self.delete_text)self.text = Text(self.root, width=75, height=20)self.text.grid(row=2, column=0, padx=10, pady=10, columnspan=2)self.des_label = Label(self.root, text='可以复制结果,也有生成的文件,与选取的文件同文件夹', bg='#ffcc8c',font=('楷体', 10))self.des_label.grid(row=3, column=0, padx=10, pady=10, columnspan=2)s = ''for i in range(0, (n := len(self.funcs)), 4):if i + 4 <= n:s += ','.join(self.funcs[i:i + 4]) + '\n'else:s += ','.join(self.funcs[i:]) + '\n's = s[:-1]self.des_label1 = Label(self.root, text=s, bg='#ffcc8c',font=('楷体', 10))self.des_label1.grid(row=4, column=0, padx=10, pady=10, columnspan=2)self.root.columnconfigure(0, minsize=10)self.root.columnconfigure(1, minsize=10)self.root.columnconfigure(0, pad=5)self.root.mainloop()def replace_func(self, s, res):passdef func_trans(self, f, f1, func_name, ss, s):passdef choose_file(self):"""如果代码太多,从text中输入会很卡,直接选择代码文件输入会很快:return:"""passdef findvar(self, ss):"""搜索与计算有关的字段:param ss::return:"""passdef mysplit(self, s):"""分割字段:param s::return:"""passdef extact_func(self, s, func_name):passdef delete_text(self, event):passdef trans(self):passif __name__ == '__main__':pro = Hive2Presto()pro.__int__()pro.main()

先把大致框架写出来,其实我已经完成了,但是代码都在公司电脑,传不出来,需要我重新再打一遍,顺便看看能不能再优化优化。UI界面大致如下:

http://www.yayakq.cn/news/928257/

相关文章:

  • 好的网站你知道张家港做网站排名
  • 商城网站主要功能百度云做网站
  • 从入门到精通网站建设制作表格的软件
  • 正能量网站网址大全做化妆品注册和注册的网站
  • 株洲网站建设 英铭国外好看的网站设计
  • 福州大型网站建设在vs上用c 做登录网站
  • 朝阳seo泰安关键词优化公司
  • 哪里有手机网站建设公司如何制作网站专题
  • 给企业做网站的业务员网站动态效果怎么做
  • 网站备案与域名关系新加坡网站制作
  • 番禺网站优化怎样做自己的vip解析网站
  • 化肥网站模板河北建设工程信息网正规网站
  • 手机制作网站的软件有哪些东西博罗网站开发
  • 公司有域名的怎么建设网站怎样申请免费网站空间
  • 南乐县住房和城乡建设局网站商家推广平台有哪些
  • 上海网站建设 seo平顶山专业做网站公司
  • 教育机构网站建设方案wordpress单页
  • 单位网站等级保护必须做吗电商网站开发需要什么语言
  • 珠海酒店网站建设电子商务网站建设需要做好哪些准备
  • 企业网站排名怎么做网站的速度诊断怎么做
  • 望京网站建设服饰营销型网站建设
  • 罗定城乡建设局网站百度pc端网页版
  • adsense用什么网站做黄冈个人网站建设平台
  • 安平县做百度网站电话简单网站建设设计
  • 建设网站appdw编辑器
  • 无锡市建设工程质监站网站qq安全中心信任网站
  • 如何用子域名做网站加强图书馆网站建设
  • 网站制作建设怎么收费国外网站卖货平台
  • 零基础学习做网站用云速成美站怎么做网站
  • 企业网站建设457216336重庆网站服务建设