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

北京网站平台建设公司任何东西都能搜出来的软件

北京网站平台建设公司,任何东西都能搜出来的软件,如何做好外贸网络营销,哈尔滨网站开发公司电话presto在0.251版本加入了自定义函数的能力,到了0.272版本有了一定的可用性,如果你在用的版本比我用的0.272高,最好是仔细看一下官方文档,因为0.272的文档中提到目前这个能力不完善,未来的配置和使用方式可能会发生改变…

presto在0.251版本加入了自定义函数的能力,到了0.272版本有了一定的可用性,如果你在用的版本比我用的0.272高,最好是仔细看一下官方文档,因为0.272的文档中提到目前这个能力不完善,未来的配置和使用方式可能会发生改变

相关资料:

自定义函数catalog配置文档:https://prestodb.io/docs/0.272/admin/function-namespace-managers.html
自定义函数使用语法:https://prestodb.io/docs/0.272/sql/create-function.html

需要注意的是,presto的自定义函数和hive、spark的自定义函数在立意上不一样,非要找相同点的话,只能说presto的自定义函数类似于一进一出函数,但是出来的结果类型由于presto本身支持很多类型,所以结果可以是多元化的

presto的内建函数存储在presto.default这个默认的存储空间中,比如当你调用最大值时,全链路为presto.default.max(),可以简写为max(),presto执行时自动补全存储空间,而其他的用户自定义函数需要自己准备存储空间也就是catalog,和其他大多数配置一样,目前只支持mysql的catalog

使用前需要做一个单独的配置,在presto的部署路径下新增etc/function-namespace/example.properties文件,并写入如下内容,指向一个单独准备好的mysql

function-namespace-manager.name=mysql
database-url=jdbc:mysql://example.net:3306/database?user=root&password=password
function-namespaces-table-name=example_function_namespaces
functions-table-name=example_sql_functions

最后两个参数是两个数据表,如果不存在会自动创建

example_function_namespaces:用来存储自定义函数的命名空间,也就是就那些存储函数的库
example_sql_functions:用来存储自定义函数的功能消息

你可以在etc/function-namespace文件夹下创建多个存储自定义函数用的catalog,并指向同一个mysql数据库,presto会自己处理对应的关系,保障每个catalog只会绑定自己的函数,不过新的命名空间需要你在mysql里面手动新增

INSERT INTO example_function_namespaces (catalog_name, schema_name) VALUES('example', 'test');

随后你就可以在presto中使用下面的语法创建自定义函数

CREATE [ OR REPLACE ] [TEMPORARY] FUNCTION
qualified_function_name (parameter_name parameter_type[, ...]
)
RETURNS return_type
[ COMMENT function_description ]
[ LANGUAGE [ SQL | identifier] ]
[ DETERMINISTIC | NOT DETERMINISTIC ]
[ RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT ]
[ RETURN expression | EXTERNAL [ NAME identifier ] ]

REPLACE:如果函数存在,则替换为当前设置的最新状态
TEMPORARY:和hive语法一样是否临时函数
qualified_function_name:函数名。如果建立的是一个永久函数,函数名称就必须写成catalog.命名空间.函数名的格式,永久函数通过函数名称和参数类型列表进行唯一标识。临时函数都由函数名称唯一标识,不可与已有的函数名重复
RETURNS :这个函数的返回值类型
COMMENT:函数说明
LANGUAGE:这个函数执行体类型,默认是SQL,其他可选的有Java等可被识别的标识符,非SQL时需要另行制定 RETURN 为 EXTERNAL 并制定对应代码类的全限定名称,一般不使用非SQL之外的,因为设计到的代码开发有其他相关的操作,成本较大
DETERMINISTIC | NOT DETERMINISTIC :指这个函数在运行计划和结果是否是可观测的,如果是可观测的,presto会自动加入一些优化,但可能会导致影响函数的结果,比如击中缓冲等。如果不是意味着每次运行都视为一个从无到有的计算体,运行的资源消耗presto只会在具体调度时根据已有的集群配置做优化,一般使用默认的不可观测
RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT :这两个是指函数传入参数有Null时的处理行为,默认的CALLED ON NULL INPUT是指只要有Null,这个函数会直接返回Null,不会发生实际的计算。反之RETURNS NULL ON NULL INPUT会直接计算函数体,一般RETURNS NULL ON NULL INPUT用的多一些,当然这意味着通常会在函数中处理Null值入参
RETURN:函数的返回体,执行体非SQL时需要写为EXTERNAL NAME 'com.example.security.CryptoUtils.encrypt'这个格式

案例sql:

CREATE FUNCTION example.default.tan(x double)
RETURNS double
DETERMINISTIC
RETURNS NULL ON NULL INPUT
RETURN sin(x) / cos(x)CREATE OR REPLACE FUNCTION example.default.tan(x double)
RETURNS double
COMMENT 'tangent trigonometric function'
LANGUAGE SQL
DETERMINISTIC
RETURNS NULL ON NULL INPUT
RETURN sin(x) / cos(x)CREATE TEMPORARY FUNCTION square(x int)
RETURNS int
RETURN x * x

通过上面的案例,大家可以发现,SQL类型的执行体,其实能够完成的能力是有限的,因为它现在只支持一行内的返回提,无法写多行,一般用在一个很复杂的字段逻辑封装中,如果你有多行就需要写代码解决了

写代码的方式,比较麻烦,成本较大,可以参考资料如下

prestodb函数开发:https://www.cnblogs.com/liminghuang/p/13364757.html
函数的注册:https://www.cnblogs.com/liminghuang/p/13745565.html
http://www.dtcms.com/wzjs/508485.html

相关文章:

  • 网站公司销售怎么做营销型网站建设企业
  • 微网站开发平台免费sem账户托管
  • 移动端购物网站建设目的深圳关键词首页排名
  • 北京建站设计百度推广登陆平台登录
  • wordpress
    泰州网站优化公司
  • 微信代运营方案怎么做好网站搜索引擎优化
  • 优推宝可以做自己网站吗百度怎么发自己的小广告
  • 最佳商城ui网站设计百度推广关键词规划师
  • 网站建设车成本教育机构排名
  • c 做网站好嘛对网站的建议和优化
  • iis网站搭建济南网站建设老威
  • 做投资要关注哪些网站湛江seo推广公司
  • 广东汕头最新消息青岛网站建设方案优化
  • 那个网站可以查询美做空基金信息流优化师职业规划
  • 网站漂浮广告代码郑州网站seo服务
  • 常州自助建站seoseo技术顾问阿亮
  • 网站建设的合同域名注册网站查询
  • 网站建设菜单栏设计搭建一个网站需要多少钱?
  • 网站建设运营策划方案网页制作公司哪家好
  • 网站制作工作室泉州全网营销优化
  • 网站建设服务 发票新品推广策划方案
  • 个人网站制作软件东莞网络公司电话
  • 广州建外贸网站公司免费推广网址
  • 辽宁app开发公司天津百度seo
  • php网站代做论坛推广的步骤
  • 招聘网站设计论文市场调研数据网站
  • 如何创办一个网站合肥seo排名收费
  • 网站建设应重视后期的服务和维护企业推广视频
  • .net做网站后台网上怎么注册公司免费的
  • 网站开发方案目录互动营销用在哪些推广上面