Logging 计费-将历史BQ日志从旧表复制到新表。谷歌云平台
谷歌云大查询问题 情况:Logging 计费-将历史BQ日志从旧表复制到新表。谷歌云平台,logging,google-bigquery,Logging,Google Bigquery,谷歌云大查询问题 情况: GCP BQ日志路由到we2区域的“计费”项目 已创建新项目“BillingNew”(欧盟地区),并要求将BQ日志传输到此项目。另外,移动历史数据 问题是: 如何将旧的计费数据插入新的计费项目以及不同项目之间的嵌套表。如果使用分区表,BigQuery不允许同时复制多个分区表。 如果只迁移一次表,我建议您在SHELLScript中执行以下操作: tables=("20200107" "20200106" "20200105" "20200104") for v
- GCP BQ日志路由到we2区域的“计费”项目
- 已创建新项目“BillingNew”(欧盟地区),并要求将BQ日志传输到此项目。另外,移动历史数据
如何将旧的计费数据插入新的计费项目以及不同项目之间的嵌套表。如果使用分区表,
BigQuery
不允许同时复制多个分区表。
如果只迁移一次表,我建议您在SHELL
Script中执行以下操作:
tables=("20200107" "20200106" "20200105" "20200104")
for val in ${tables[*]}; do
bq cp project1:dataset1.table1_$val project2:dataset2.table2_$val
done
您应该将所有日期分区作为字符串放入列表中,然后运行循环。
我希望有帮助
编辑1:
由于在区域之间复制表时遇到问题,我建议如下:
考虑到只迁移一次表,可以在以下区域之间使用数据集副本:
bq mk --transfer_config --project_id=myproject --data_source=cross_region_copy --target_dataset=123_demo_tokyo --display_name='My Dataset Copy' --params='{"source_dataset_id":"123_demo_eu","source_project_id":"mysourceproject","overwrite_destination_table":"true"}'
您可以查看完整的参考资料
如果复制旧数据集并将新数据集设置为目标数据集,则将在其中创建所有表
希望有帮助为了将账单数据移动到新项目中,首先需要将数据移动到与新数据集相同的区域。您可以按照以下步骤完成此操作。请注意,账单表有嵌套数据;因此,您应该使用支持此类数据的文件格式,如。此外,由于您无法在不同区域之间直接复制数据集,请考虑以下因素 一旦您在Google云存储中拥有数据,您可以按照“”文档将其加载到新的计费表中,请在此步骤中小心,因为有2个选项:。加载类型将取决于分区是新的还是已有数据 另一种选择是使用“Beta”功能;但是,并非所有区域当前都支持数据集复制。您可以在BigQuery数据传输服务当前所在的区域中创建数据集副本。通过使用“复制数据集”功能,我建议您将单独数据集中的数据加载到新项目中(与目标数据集位于同一位置),然后使用将数据添加到目标数据集中
在这两个选项中,如果在单独的数据集中加载历史数据,则可以使用查询作业在新表中加载账单数据。以防其他人遇到相同的问题:
- GCP、BQ日志,路由到we2区域的“计费”项目
- 已创建新项目“BillingNew”(欧盟地区),并要求将BQ日志传输到此项目。另外,移动历史数据
感谢您提出使用“转移作业”和复制数据集的建议,因为GCP生成的结构化分区表太复杂,无法使用。您能更好地说明您的问题吗?在GCP,有一个项目1,有数据集计费1,所有BQ日志都在该项目中路由。任何项目中与BQ相关的每个操作都会记录到自动表中,即“cloudaudit\u googleapis\u com\u data\u access\u 20200107”。您的表是否按日期分区?是的,路由日志的表由google自动创建,并按日期分区,大多数列都是嵌套的(结构化的)如果在不同区域的项目之间进行复制,这似乎是不可能的。在我们的例子中,旧表在europe-west2,新表在eu。我在同一区域的项目之间尝试了一个测试复制表,结果很好。请查看命令和错误。命令:“xxx@cloudshell:~(Project1)$bq cp Project1:Dataset1.Table1 ProjectX:Dataset2.NewTable“错误:”cp操作中的BigQuery错误:未找到:Dataset ProjectX:Dataset2“如果我尝试在同一区域(不同项目)的数据集之间复制测试表,它会正常运行。ProjectX中肯定存在“数据集2”。“Dataset1”是“west-europe2”,“Dataset2”是“EU”区域。您的数据集是否只有您要复制的表,还是有更多的表?出于测试目的,源Dataset1只有此表,目标Dataset2为空,还没有表。
bq mk --transfer_config --project_id=TARGET_PROJECT_ID --data_source=cross_region_copy --target_dataset=TARGET_DATASET_NAME --display_name='Transfer job name, type any' --params='{"source_dataset_id":"SOURCE_DATASET_NAME(ID)","source_project_id":"SOURCE_PROJECT_NAME(ID)","overwrite_destination_table":"true"}'