BigQuery:利用 Create or replace table function預先處理部分程式碼

許博淳
數據共筆
Published in
Apr 22, 2022

有了 procedure我們就能確保任何時候呼叫能得產出一樣的結果,但如果我不只是要結果,而是要把結果再做進一步的應用呢?

懶人包

同一類型的運算塞在 table function

最後要顯示的結果放在 procedure

其實我們只要很簡單的改寫一下 procedure的 code即可(還不知道 procedure或忘記的話可以點我

# 這是原本產生 procedure的 codeCREATE OR REPLACE PROCEDURE `dataset_name.user_using_time`(parameter1 data_type, parameter2 data_type )
BEGIN
-- 原本的 Code
-- 最後記得加 ;
END;
# 這是產生 table function的 codeCREATE OR REPLACE TABLE FUNCTION
`dataset_name.user_using_time`(parameter1 data_type, parameter2 data_type )
AS ((
-- 原本的 Code
-- code 的部份要用兩個括弧包起來
));

這邊說明一下兩者的不同之處

Call procedure只能觀看結果,無法再延伸運算

Call table function可以像表格一樣當做資料來源,再延伸做運算

實用應用範例

SELECT
second/3600 AS hour
FROM
`dataset_name.user_using_time`("user_id", "video")

但要特別注意,不可以有同名的 procedure和 table function

--

--