【问题标题】:how to use SQL user defined function in snowflake?如何在雪花中使用 SQL 用户定义函数?
【发布时间】:2019-03-26 04:02:26
【问题描述】:

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

这是这里使用的代码:

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

select *
from LINEITEM
limit 200

您可以看到该表包括两个字段: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)连接到原始表 (LINEITEM)

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

【问题讨论】:

    标签: sql function user-defined-functions snowflake-cloud-data-platform


    【解决方案1】:

    我知道您的问题是关于 UDF 的,但是在这里使用 UDF 来达到您的目的是矫枉过正的。

    您可以使用以下语句增加表中的属性。

    SELECT
        L_LINENUMBER+1 as L_LINENUMBER1
    FROM LINEITEM;
    

    要计算表中属性的平均值,您应该了解这是一个聚合函数,仅在与 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';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-05
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      • 2010-11-06
      • 1970-01-01
      • 2022-01-01
      • 1970-01-01
      相关资源
      最近更新 更多