论如何使用SQL表函数进行数据解析与获取

什么是表函数?

表函数(Table Function)针对每个输入行返回一个数据行的集合,即一个二维表。 

返回的数据集合可能为空,可能包含一行或者多行数据,每行数据包含一个或者多个列。普通的标量函数的返回值是一个标量值(Scalar Value)。

为什么需要表函数

表函数在如下两个方面有着重要的作用:

数据的解析

数据的获取

除了内置的表函数之外,用户可以根据需求自定义表函数,提高数据分析效率。

在鸿鹄中如何使用表函数

在鸿鹄中,可以在任何需要二维表结构的地方使用表函数。表函数分为SQL表函数和非SQL表函数:

SQL表函数

SQL表函数可以看成是一个带参数的视图(Parameterized View),支持用户自定义函数(User Defined Table Function, UDTF)。

创建SQL表函数:

  • get_events_from_dataset即创建的SQL表函数名称。

  • @data_set table, @key string对应语法中的named_parameter,表明这个表函数有两个参数,参数data_set的类型为table,参数key的类型为string。

  • SELECT * FROM @data_set WHERE 

    CONTAINS(@key)是SQL表函数对应的查询表达式。

查看SQL表函数

使用SQL表函数

定义了上述名称为get_events_from_dataset的SQL表函数后我们可以这样使用它:

这个查询等价于查询:

删除SQL表函数

删除表函数定义时,需要指定函数签名(signature),即参数类型必须和定义的参数类型完全匹配。

非SQL表函数

内置非SQL表函数

鸿鹄提供了一系列内置非SQL表函数,用于丰富查询的内容。内置非SQL表函数主要使用C++和Python来实现。

场景:生成从1到5的5个整数,每行一个整数。

场景:解析类型为json的字段

更多关于内置非SQL表函数的用法说明请参考使用手册。

自定义非SQL表函数

当前鸿鹄仅支持用户自定义Python函数(Python User Defined Table Function, Python UDTF)。自定义Python表函数,参见 Python UDTF开发。

表函数的最佳实践

在鸿鹄中,表函数的使用需要结合实际的数据分析需求来使用。通常我们在遇到一些无法通过通用的SQL查询来满足的需求时,可以按照如下步骤考虑需求是否能通过表函数功能来实现:

  • 是否可以通过自定义SQL表函数来实现

  • 是否有内置的表函数可以直接使用

  • 是否可以自己通过鸿鹄提供的SDK来实现自己独特需求的表函数

其他参考资料

Table Functions 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值