BigQuery表分区传统和标准sql之间的区别

时间:2017-03-22 06:06:39

标签: google-bigquery

使用column1,column2,column3 10,'rohit', 123 20,'warner',-23 30,'anna',234 40,'shreya',19 50,'shravs',89 60,'vasu',12 100,'ajay',87 "1,000",'sumanth',-8 "2,000",'arjun',"1,228" 命令行参数...

对BigQuery表进行分区时
  1. 是创建单个物理表还是多个物理表?使用Standard vs Legacy SQL时它是否有所不同
  2. 遗留标准SQL和标准SQL中是否都有伪列_PARTITIONTIME?
  3. 由于标准SQL不支持分区装饰器,如何在使用标准SQL时克服限制?

2 个答案:

答案 0 :(得分:2)

  
      
  1. 是创建单个物理表还是多个物理表?使用Standard vs Legacy SQL时它是否有所不同
  2.   

BigQuerys内部系统是分布式的,因此它实际上是Google基础架构内相同数据的多个物理副本。由于它是托管服务,这对我们来说是透明的。

  
      
  1. 遗留标准SQL和标准SQL中是否都有伪列_PARTITIONTIME?
  2.   

是的,它可用。有关将此pseduo列放在examples中的位置的更多信息。

  
      
  1. 由于标准SQL不支持分区装饰器,如何在使用标准SQL时克服限制?
  2.   

纯SQL中的装饰器可以模仿_PARTITIONTIME伪列。将装饰器视为此服务的API端的补充发明。当您需要删除一天并将该日重新加载到表中时,您无法使用SQL轻松完成此操作,但使用API​​和装饰器,您可以运行bq rm 'mydataset.table$20160301'。分区装饰器使您可以将数据加载到特定分区:[TABLE_NAME]$20160301

答案 1 :(得分:0)

对于3。-装饰器的实现方式如下:

The following TimeoutException was thrown running a test:
TimeoutException after 0:00:03.500000: The test exceeded the timeout. It may have hung.
Consider using "addTime" to increase the timeout before expensive operations.