如何在 snowflake 中使用 SQL 用户自定义函数?

how to use SQL user defined function in snowflake?

我正在研究如何在雪花中使用SQL。这是快照:

这是这里使用的代码:

use schema SNOWFLAKE_SAMPLE_DATA.TPCH_SF1;
--use schema SNOWFLAKE_SAMPLE_DATA.TPCH_SF10;

select *
from LINEITEM
limit 200

你可以看到table包含两个字段:L_LINENUMBER、L_QUANTITY。现在我想尝试一个用户定义的函数,它可以做:

  1. 使用L_LINENUMBER,L_QUANTITY作为两个参数传入函数,
  2. 计算L_LINENUMBER1=L_LINENUMBER+1,和L_QUANTITY1=mean(L_QUANTITY).
  3. 将两个新字段(L_LINENUMBER1,L_QUANTITY1)加入原来的table(LINEITEM)

如何使用创建函数来做到这一点。我已经阅读了很多关于创建函数的例子。但我就是不明白这一点。也许是因为我不擅长SQL。那么,谁能给我一个包含所有细节的综合示例?

我知道你的问题是关于 UDF 的,但是在这里使用 UDF 是为了你的目的是矫枉过正的。

您可以使用以下语句递增 table 中的属性。

SELECT
    L_LINENUMBER+1 as L_LINENUMBER1
FROM LINEITEM;

要计算 table 中属性的平均值,您应该了解这是一个聚合函数,只有与 group by 语句一起使用时才有意义。您的数据示例如下所示。

SELECT
    AVG(L_QUANTITY) AS L_QUANTITY1
FROM LINEITEM
GROUP BY L_ORDERKEY;

由于您的问题最初是关于 UDF,并且您似乎在关注 Snowflake 的示例数据,因此他们提供的示例是以下 UDF,它接受开尔文温度并将其转换为华氏温度(从定义中您可以看到它可以应用于数字类型的任何属性)。

CREATE OR REPLACE FUNCTION 
  UTIL_DB.PUBLIC.convert_fahrenheit( t NUMBER)
  RETURNS NUMBER
  COMMENT='Convert from Kelvin from Fahrenheit'
  AS '(t - 273.15) * 1.8000 + 32.00';