BigQuery - 使用者自定義函式



BigQuery 的優勢之一是能夠建立自定義邏輯來操作資料。在像Python這樣的程式語言中,開發人員可以輕鬆地編寫和定義函式,這些函式可以在指令碼中的多個位置使用。

BigQuery 中的持久使用者自定義函式

許多SQL方言,包括 BigQuery,都支援這些函式。BigQuery 將其稱為持久使用者自定義函式。它們簡稱為 UDF(使用者自定義函式)或 PUDF(持久使用者自定義函式)。

使用者自定義函式的本質可以分為兩個步驟 -

  • 定義函式邏輯
  • 在指令碼中使用函式

定義使用者自定義函式

定義使用者自定義函式從一個熟悉的 CRUD 語句開始:CREATE OR REPLACE。

在這裡,而不是使用 CREATE OR REPLACE TABLE,需要使用 CREATE OR REPLACE FUNCTION 後跟AS()命令。

與可以在 BigQuery 中編寫的其他 SQL 查詢不同,在建立 UDF 時,需要指定輸入欄位和型別。

這些輸入的定義方式類似於 Python 函式 -

(column_name, type)

為了檢視這些步驟的組合,我建立了一個簡單的臨時 UDF,由 TEMP FUNCTION 指定,它根據使用者輸入解析各種 URL。

Defining a User-defined Function

建立上述臨時函式的步驟如下 -

  • CREATE TEMP FUNCTION
  • 指定函式名稱 (get_sitetype)
  • 指定函式輸入和型別 (inp_url, STRING)
  • 告訴函式返回什麼型別 (STRING)

REGEXP_CONTAINS() 函式搜尋包含提供的 URL 字串的字串的匹配項。NET.HOST() 函式從輸入 URL 字串中提取主機域名。

將其應用於 hacker news 資料集(BigQuery 公共資料集),我們可以生成一個將儲存的 URL 分類為不同媒體類別的輸出 -

Defining a User-defined Function

注意 - 臨時函式必須緊跟在查詢後面。

廣告

© . All rights reserved.