Google bigquery BigQuery脚本:循环表的记录

Google bigquery BigQuery脚本:循环表的记录,google-bigquery,Google Bigquery,在BigQuery脚本中,我试图循环一个表的记录,并对每个记录执行一些操作。我找不到可以在脚本中包含以下内容的直接方法: DECLARE record STRUCT<id INT64, name STRING>; LOOP (SELECT id, name FROM Testing.Employee) SET record = (id, name) -- Do something with record END LOOP; 我尝试使用结构数组,如下所示: DECLARE

在BigQuery脚本中,我试图循环一个表的记录,并对每个记录执行一些操作。我找不到可以在脚本中包含以下内容的直接方法:

DECLARE record STRUCT<id INT64, name STRING>;

LOOP (SELECT id, name FROM Testing.Employee)
  SET record = (id, name)
  -- Do something with record
END LOOP;
我尝试使用结构数组,如下所示:

DECLARE all_rows ARRAY<STRUCT<id INT64, name STRING>>;
SET all_rows = ( select as STRUCT id, name from Testing.Employees );

但它正确地给出了类型强制错误,因为我试图将STRUCT分配给数组类型。让我知道是否有在数据集上迭代的替代方法。

可能是这样的吗

DECLARE all_rows ARRAY<STRUCT<id INT64, name STRING>>;
SET all_rows = ( SELECT ARRAY(SELECT AS STRUCT id, name from Testing.Employees) );

我想这取决于你为什么循环。您是否正在尝试执行常规SQL无法处理的操作?使用记录做一些事情是相当模糊的,但大多数事情都可以用简单的数据库优先原则来处理。数据库擅长在集合中处理事情,一次迭代一行数据通常要慢得多。如果您确实需要迭代,那么在python、R等数据库之外进行迭代可能会更快。这实际上取决于您要做什么。考虑在你的文章中添加更多的细节。@ RtHHA我用一个我想实现的示例逻辑发布了一个问题:这能回答你的问题吗?SergiMuñoz不,它解决了问题陈述,但存在一些性能问题。由于这种方法似乎对我不起作用,我开始考虑使用脚本来解决问题,但进入了另一个问题,这里将对此进行解释。