資料表函式
資料表函式 (也稱為資料表值函式 (TVF)) 是使用者定義的函式,會傳回資料表。您可以在任何可使用資料表的地方使用資料表函式。資料表函式的行為與檢視類似,但資料表函式可以採用參數。
建立資料表函式
如要建立資料表函式,請使用 CREATE TABLE FUNCTION 陳述式。資料表函式包含產生資料表的查詢。函式會傳回查詢結果。下列資料表函式會採用 INT64 參數,並在查詢的 WHERE 子句中使用這個值,查詢名為 bigquery-public-data.usa_names.usa_1910_current 的公開資料集:
CREATE OR REPLACE TABLE FUNCTION mydataset.names_by_year(y INT64) AS ( SELECT year, name, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE year = y GROUP BY year, name );
如要以其他方式篩選,可以將多個參數傳遞至表格函式。 下列資料表函式會依年份和名稱前置字元篩選資料:
CREATE OR REPLACE TABLE FUNCTION mydataset.names_by_year_and_prefix( y INT64, z STRING) AS ( SELECT year, name, SUM(number) AS total FROM `bigquery-public-data.usa_names.usa_1910_current` WHERE year = y AND STARTS_WITH(name, z) GROUP BY year, name );
表格參數
注意:如要尋求支援或針對這項功能提供意見回饋,請傳送電子郵件至 bq-dcr-eng@google.com。您可以將 TVF 參數設為資料表。在資料表參數名稱後方,您必須明確指定必要的資料表結構,指定方式與結構體的欄位相同。傳遞至 TVF 的表格引數可包含參數結構定義中指定的資料欄以外的資料欄,且資料欄可依任意順序顯示。
下列資料表函式會傳回包含 item_name 資料表總銷售額的資料表 (來自 orders 資料表):
CREATE TABLE FUNCTION mydataset.compute_sales ( orders TABLE<sales INT64, item STRING>, item_name STRING) AS ( SELECT