Google bigquery BigQuery中的游标

Google bigquery BigQuery中的游标,google-bigquery,Google Bigquery,BigQuery脚本中有没有一种方法可以像MySql脚本中那样声明游标。 我必须安排一个脚本定期运行,这是一个逻辑 步骤1:提取所有企业名称多行输出 步骤2:对于每个企业,转到企业的表并运行一些更新查询 MySql有游标,这有助于在脚本中实现这种功能。我指的是BigQuery的脚本页面,但找不到任何这样的东西。 BigQuery中是否有等价的游标 有没有其他方法可以做,我想用BigQuery脚本中的可用内容做些什么?BigQuery中没有SQL游标,但您可以使用一些替代方法,作为第一个选项,您

BigQuery脚本中有没有一种方法可以像MySql脚本中那样声明游标。 我必须安排一个脚本定期运行,这是一个逻辑 步骤1:提取所有企业名称多行输出 步骤2:对于每个企业,转到企业的表并运行一些更新查询

MySql有游标,这有助于在脚本中实现这种功能。我指的是BigQuery的脚本页面,但找不到任何这样的东西。

BigQuery中是否有等价的游标


有没有其他方法可以做,我想用BigQuery脚本中的可用内容做些什么?

BigQuery中没有SQL游标,但您可以使用一些替代方法,作为第一个选项,您可以使用,它将在当前脚本的生命周期内存在。当过程调用返回时,在过程中创建的表仍然可用,直到主脚本完成

CREATE TEMP TABLE light AS
SELECT * FROM `bigquery-public-data.noaa_lightning.lightning_2019` LIMIT 1000;

SELECT * FROM light;
此外,还有WITH语句来引用SELECTs,限制您必须在同一子句中执行操作,例如,可以调用用户定义函数或存储过程来执行所需的更新操作

WITH data AS (
  SELECT * FROM `bigquery-public-data.noaa_lightning.lightning_2019` LIMIT 1000
)
SELECT * FROM data;
最后,您可以使用获取所有企业名称,然后在循环中执行所需的更新操作,也可以调用UDF或SP

-- Sample from the official documentation for the use of an array
-- Declare a variable to hold names as an array.
DECLARE top_names ARRAY<STRING>;
-- Build an array of the top 100 names from the year 2017.
SET top_names = (
  SELECT ARRAY_AGG(name ORDER BY number DESC LIMIT 100)
  FROM `bigquery-public-data`.usa_names.usa_1910_current
  WHERE year = 2017
);

BigQuery中没有SQL游标,但是您可以使用一些替代方法,作为第一个选项,您可以使用,它将在当前脚本的生命周期内存在。当过程调用返回时,在过程中创建的表仍然可用,直到主脚本完成

CREATE TEMP TABLE light AS
SELECT * FROM `bigquery-public-data.noaa_lightning.lightning_2019` LIMIT 1000;

SELECT * FROM light;
此外,还有WITH语句来引用SELECTs,限制您必须在同一子句中执行操作,例如,可以调用用户定义函数或存储过程来执行所需的更新操作

WITH data AS (
  SELECT * FROM `bigquery-public-data.noaa_lightning.lightning_2019` LIMIT 1000
)
SELECT * FROM data;
最后,您可以使用获取所有企业名称,然后在循环中执行所需的更新操作,也可以调用UDF或SP

-- Sample from the official documentation for the use of an array
-- Declare a variable to hold names as an array.
DECLARE top_names ARRAY<STRING>;
-- Build an array of the top 100 names from the year 2017.
SET top_names = (
  SELECT ARRAY_AGG(name ORDER BY number DESC LIMIT 100)
  FROM `bigquery-public-data`.usa_names.usa_1910_current
  WHERE year = 2017
);

我在BigQuery中使用了下面的模拟循环

开始


结束

我在BigQuery中使用了以下方法模拟光标循环

开始

结束