Google bigquery 将数百个bigquery表合并为一个

Google bigquery 将数百个bigquery表合并为一个,google-bigquery,Google Bigquery,我有数百个BigQuery表,希望将它们合并为一个。我开始尝试列出我拥有的表。我试过bq ls,但它只能显示20-50个表格。还有,我如何做类似于选择*进入。。。在Bigquery中 我的应用程序日志有很多表,如: weblog.20150500 weblog.20150601 weblog.20150602 weblog.2015060601 weblog.2015060701 weblog.2015060702 实现选择*进入。。。您可以使用逗号从所有表中选择*并根据指定目标表 例如: D

我有数百个BigQuery表,希望将它们合并为一个。我开始尝试列出我拥有的表。我试过bq ls,但它只能显示20-50个表格。还有,我如何做类似于选择*进入。。。在Bigquery中

我的应用程序日志有很多表,如:

  • weblog.20150500
  • weblog.20150601
  • weblog.20150602
  • weblog.2015060601
  • weblog.2015060701
  • weblog.2015060702

实现选择*进入。。。您可以使用逗号从所有表中选择*并根据指定目标表

例如:

DATASET=[YOUR_DATASET_NAME]
TABLES=$(bq ls --max_results=1000 --format=csv $DATASET | \
  grep -v "tableId,Type" | cut -d "," -f 1 | tr "\n" ",")
bq --dataset_id=$DATASET query  --destination_table=$DATASET.merged \
  "select * from $TABLES"
注意:如果表中有公共字段,但它们没有完全对齐,则必须列出公共字段,而不是*

如果有特定的表名模式,也可以在查询中使用通配符

例如,匹配示例日志数据集中的201506*表

DATASET=weblog
PREFIX=201506
bq query --destination_table=$DATASET.merged query "SELECT * FROM 
  (TABLE_QUERY($DATASET, 'REGEXP_MATCH(table_id, r\"^"$PREFIX"[\d]{4}\")'))"
注意,您可以使用“bq cp--append_table src dst”将表“src”追加到表“dst”中,类似于对目标表运行“select*”查询。使用“bq cp”的优点是它更快、更免费。