sql高阶函数

a9wyjsp7  于 2021-05-18  发布在  Spark
关注(0)|答案(0)|浏览(334)

我刚刚介绍了sparksql中数组的高阶函数。但是,我没有在网上找到关于它们的用法、语法和动态的足够的文档/解释。我特别想了解如何使用lambda函数和传递参数来操作具有高阶函数的数组:
首先,我关注了在web上发现的两个高阶函数sql查询:我试图了解它们的用法以及如何操作数组的语法:
查询1:

select id, my_arr, transform(my_arr, (val, i) -> val + i) AS new arr
from table_name;

在上面的sql中,myu arr是一个数组类型的列,它返回一个数组,该数组包含添加到相应数组索引中的所有输入元素。
问题:
对于表达式 (val, i) ,spark如何理解将索引传递到 i ?
如果我传递第三个参数作为 (val, i, n) ?
spark总是将数组索引作为第二个参数传递吗?我怎样才能让它传递更多的论点?
我在哪里可以找到更详细的例子和描述?
问题2:

select key, val,
       aggregate(c02_levels,
                (1.0 as product, 0 as N),
                (buffer, c02) -> (c02 * buffer.product, buffer.N + 1),
                buffer -> round(Power(buffer.prodyuct, 1.0 / buffer.N))) as geomean
from my_table

在上面的sql中, c02_levels 是数组类型。
问题-
Spark在争论中传递了什么 buffer 以及 c02 ?
有人能一步一步地解释一下上述问题吗?它将帮助我理解如何使用高阶函数。
有人能帮我理解上面的内容吗?请给我指出正确的方向,在那里我可以找到关于sparksql?中高级高阶函数的更详细的例子和解释?。
谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题