每个周末我都会向google bucket
添加一些文件,然后从命令行运行一些内容,用新数据“更新”表格。
通过“更新”我的意思是我删除了表格,然后使用bucket
中的所有文件重新制作它,包括新文件。
我通过使用python
在Windows
命令行中执行以下命令来完成所有操作:
bq mk --table --project_id=hippo_fence-5412 mouse_data.partition_test gs://mybucket/mouse_data/* measurement_date:TIMESTAMP,symbol:STRING,height:FLOAT,weight:FLOAT,age:FLOAT,response_time:FLOAT
这个表变得越来越大(> 200 GB),实验室使用分区表会便宜得多。
我尝试过以几种方式对表进行分区,包括official docs推荐的内容,但我无法使其正常工作。
我尝试的最新命令只是插入--time_partitioning_type=DAY
,如:
bq mk --table --project_id=hippo_fence-5412 --time_partitioning_type=DAY mouse_data.partition_test gs://mybucket/mouse_data/* measurement_date:TIMESTAMP,symbol:STRING,height:FLOAT,weight:FLOAT,age:FLOAT,response_time:FLOAT
但这不起作用,给我错误:
FATAL Flags parsing error: Unknown command line flag 'time_partitioning_type'
我该如何做到这一点?
答案 0 :(得分:0)
对于旧数据,可能的解决方案是创建一个空的分区表,然后在所需的日分区中导入每个存储桶文件。不幸的是,当我测试它时,它不适用于通配符。
<强> 1。创建分区表
bq mk --table --time_partitioning_type=DAY [MY_PROJECT]:[MY_DATASET].[PROD_TABLE] measurement_date:TIMESTAMP,symbol:STRING,height:FLOAT,weight:FLOAT,age:FLOAT,response_time:FLOAT
<强> 2。导入所需partition day中的每个文件。以下是2018年2月22日文件的示例。
bq load [MY_PROJECT]:[MY_DATASET].[PROD_TABLE]$20180222 gs://MY-BUCKET/my_file.csv
第3。通常处理当前上传,它们将在上传分区当天自动计算。
bq load [MY_PROJECT]:[MY_DATASET].[PROD_TABLE] gs://MY-BUCKET/files*