簡體   English   中英

如何在雪花中使用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

您可以看到該表包括兩個字段:L_LINENUMBER,L_QUANTITY。 現在,我想嘗試一個用戶定義的函數,該函數可以執行以下操作:

  1. 使用L_LINENUMBER,L_QUANTITY作為傳遞到函數中的兩個參數,
  2. 計算L_LINENUMBER1 = L_LINENUMBER + 1,並且L_QUANTITY1 =平均值(L_QUANTITY)。
  3. 將兩個新字段(L_LINENUMBER1,L_QUANTITY1)連接到原始表(LINEITEM)

如何使用創建功能來做到這一點。 我已經閱讀了很多有關create函數的示例。 但是我就是不明白這一點。 也許是因為我不擅長SQL。 那么,誰能給我一個包含所有細節的綜合例子?

我知道您的問題是關於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';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM