将相同输入类型的多个值传递给 BigQuery Table Value Function
Pass multiple values of same input type to BigQuery Table Valued Function
假设我有一个 table 值函数 (TVF),例如
CREATE TEMP TABLE FUNCTION Job(
input_val INT64)
AS
SELECT
val,
row2
FROM TableOfInterest
WHERE val = input_val;
效果很好,return 是单个 input_val
的合适结果。但是我想要 return 多行,每个值对应 input_val
.
通过伪代码
SELECT
val,
row2
FROM
Job(
(
SELECT
val
FROM ValTable
LIMIT 100
))
我的希望是 return 100 行,其中每一行都给我来自 TableOfInterest
的相应结果,对应 input_val
.
的相应值
另一个问题是,最终我想加入第二个 TVF,如下所示
CREATE TEMP TABLE FUNCTION Job2(
input_val INT64)
AS
SELECT
val,
row3
FROM TableOfInterest2
WHERE val = TIMESTAMP_FROM_UNIX_MICROS(input_val);
如何为 input_val
传递每个 TVF 的多个值并返回 tables?
我查看了 this and this,但它们似乎没有解决我在 BigQuery 中尝试做的事情。这感觉很简单。不是吗?
我确定我只是遗漏了文档中一些明显的东西。感谢您的帮助!
But I'd like to return multiple rows, one for each value of input_val.
考虑以下:
第 1 步 - 创建 table 函数
CREATE TABLE FUNCTION project.dataset.Job(input_vals array<INT64>) AS (
SELECT
val,
row2
FROM TableOfInterest
WHERE val IN UNNEST(input_vals)
);
第 2 步 - 使用它:o)
SELECT
val,
row2
FROM project.dataset.Job(
ARRAY(
SELECT val
FROM ValTable
LIMIT 100
))
假设我有一个 table 值函数 (TVF),例如
CREATE TEMP TABLE FUNCTION Job(
input_val INT64)
AS
SELECT
val,
row2
FROM TableOfInterest
WHERE val = input_val;
效果很好,return 是单个 input_val
的合适结果。但是我想要 return 多行,每个值对应 input_val
.
通过伪代码
SELECT
val,
row2
FROM
Job(
(
SELECT
val
FROM ValTable
LIMIT 100
))
我的希望是 return 100 行,其中每一行都给我来自 TableOfInterest
的相应结果,对应 input_val
.
另一个问题是,最终我想加入第二个 TVF,如下所示
CREATE TEMP TABLE FUNCTION Job2(
input_val INT64)
AS
SELECT
val,
row3
FROM TableOfInterest2
WHERE val = TIMESTAMP_FROM_UNIX_MICROS(input_val);
如何为 input_val
传递每个 TVF 的多个值并返回 tables?
我查看了 this and this,但它们似乎没有解决我在 BigQuery 中尝试做的事情。这感觉很简单。不是吗?
我确定我只是遗漏了文档中一些明显的东西。感谢您的帮助!
But I'd like to return multiple rows, one for each value of input_val.
考虑以下:
第 1 步 - 创建 table 函数
CREATE TABLE FUNCTION project.dataset.Job(input_vals array<INT64>) AS (
SELECT
val,
row2
FROM TableOfInterest
WHERE val IN UNNEST(input_vals)
);
第 2 步 - 使用它:o)
SELECT
val,
row2
FROM project.dataset.Job(
ARRAY(
SELECT val
FROM ValTable
LIMIT 100
))