Google bigquery 大查询复制一定范围内的分区表

Google bigquery 大查询复制一定范围内的分区表,google-bigquery,Google Bigquery,我在BigQuery中有生产数据集和测试数据集。两者都以天为单位进行分区,都有_PARTITIONTIME列 我是否有办法在特定范围内使用bq cp函数分区表复制生产数据集以测试数据集?在过去的一个月里 如果我只想复制1个分区表,我只需要使用$[yyyymmdd]关键字来选择1个分区表,但我试图避免使用逗号30次来选择一个月的分区表 我知道可以通过类似于_PARTITIONTIME>=2018-01-01 00:00:00和_PARTITIONTIME

我在BigQuery中有生产数据集和测试数据集。两者都以天为单位进行分区,都有_PARTITIONTIME列

我是否有办法在特定范围内使用bq cp函数分区表复制生产数据集以测试数据集?在过去的一个月里

如果我只想复制1个分区表,我只需要使用$[yyyymmdd]关键字来选择1个分区表,但我试图避免使用逗号30次来选择一个月的分区表

我知道可以通过类似于_PARTITIONTIME>=2018-01-01 00:00:00和_PARTITIONTIME<2018-01-30 00:00:00的方式进行查询

也可以为复制做类似的事情吗

谢谢

答案是否定的。 您可以使用bq命令编写简单的脚本来逐个执行此操作

或者您可以生成bq命令来执行以下操作:

#standardSQL
SELECT
  CONCAT('bq cp <srcproj>:<dataset>.<table>$', partname, ' <testproj>:<dataset>.<table>$', partname)
FROM (
  SELECT
    DISTINCT FORMAT_DATETIME('%Y%m%d',
      CAST(_PARTITIONDATE AS datetime)) partname
  FROM
    `<srcproj>.<dataset>.<table>`
  WHERE
    _PARTITIONTIME >= "2018-05-10 00:00:00"
    AND _PARTITIONTIME < "2018-05-13 00:00:00")

哎哟我有大约20张表需要复制我可能会编写一个简单的程序来生成bash脚本。我仍然建议使用我给你的查询来生成列表。它将正确处理缺少的分区,因为它直接从BQ元数据生成列表。所以基本上,bash脚本只需在20个表的列表中循环,并为所有内容转储bq-cp命令