資料表函式

資料表函式 (也稱為資料表值函式 (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