Google bigquery 有没有办法在BigQuery标准SQL脚本中循环遍历数据集中的所有表?

Google bigquery 有没有办法在BigQuery标准SQL脚本中循环遍历数据集中的所有表?,google-bigquery,Google Bigquery,我在一个数据集中有许多每日表(以_YYYYMMDD后缀命名)。我需要编写一个每日计划查询来循环遍历每个每日表,与另一个动态变化的表执行连接,并在BigQuery中覆盖当天的表。我正在研究“标准SQL中的脚本”,想知道是否有一种方法可以在循环中迭代_YYYYMMDD表 提前谢谢 我建议您使用通配符表,它允许您将标准SQL中的一些功能与BigQuery结合使用。您可以阅读更多内容并查看一些示例 此外,您要查找的语法应该类似于: SELECT #columns that you want FROM

我在一个数据集中有许多每日表(以_YYYYMMDD后缀命名)。我需要编写一个每日计划查询来循环遍历每个每日表,与另一个动态变化的表执行连接,并在BigQuery中覆盖当天的表。我正在研究“标准SQL中的脚本”,想知道是否有一种方法可以在循环中迭代_YYYYMMDD表


提前谢谢

我建议您使用通配符表,它允许您将标准SQL中的一些功能与BigQuery结合使用。您可以阅读更多内容并查看一些示例

此外,您要查找的语法应该类似于:

SELECT 
#columns that you want
FROM
  `<project-id>.<dataset-id>.<table-prefix>*`
我希望有帮助

答案更新(在用户评论之后):

BigQuery中有一个名为的方法,允许用户从数据集中的某些列上传数据。在您的情况下,这可能是一个合适的解决方案。使用update的语法如下所示:

UPDATE sample_db.UserSessions
SET ip_address = REGEXP_REPLACE(ip_address, r"(\.[0-9]+)$", ".0")
WHERE TRUE

谢谢你的回复。抱歉,如果我的问题不清楚的话:当前数据集由通配符表组成,这些表由_YYYYMMDD前缀分隔。例如:dataset_20200101、dataset_20200102等。我的要求是:从这些嵌套的通配符表中获取每个单独的每日表,与另一个表执行联接(每天更新),并用这个新表覆盖原始表。我需要在60多个通配符表上执行此操作,并想知道是否有任何简单的方法可以循环通过YYYYMMDD.P.S上参数化的多个通配符表。我还能够编写一些Python代码来帮助实现这一点(就目前使用pandas_gbq但计划迁移到BigQuery Python客户端库的工具而言)。因此,如果有一种通过Python云函数来实现这一点的经济高效的方法,您也会很感兴趣。@mrag,当您说“覆盖原始表”时,这是哪个表?您有一个带有时间戳后缀的每日表和一个将由这些表值上载的表。我没弄错吧?是的,没错。因此,在同一个数据集中有两个表。一个“表”由60多个带有_YYYMMDD后缀的嵌套通配符表组成。另一个表包含一个表。两者都是每天独立更新的。我需要从第一个表中获取每个单独的_YYYYMMDD表,与第二个表连接,并覆盖第一个_YYYYMMDD表。希望这更清楚。很抱歉搞混了。理想情况下,我只更新每天受影响的相关行,但由于BigQuery不允许更新单个行,我必须删除并替换整个表。@mrag,感谢您的回复。我想问你,你真的需要覆盖所有内容吗?因为在BigQuery中有一个更新方法,您可以在其中更新数据集的列。链接:
UPDATE sample_db.UserSessions
SET ip_address = REGEXP_REPLACE(ip_address, r"(\.[0-9]+)$", ".0")
WHERE TRUE