Google BigQuery - 嵌套字段或表连接

时间:2014-05-16 17:10:13

标签: google-bigquery

  1. 在Google BigQuery [1]中,它支持嵌套字段类型,所以我可以说它是组织的首选方式,而不是分割成表格和带连接的查询吗?

  2. 当我们需要添加新列时,Bigquery支持补丁,在非常大的表中添加新列时的性能如何,例如1TB,有没有办法分钟。停工时间,因为我们可能需要每月更新一次列。

  3. [1] https://developers.google.com/bigquery/docs/data#nested

    [2] https://developers.google.com/bigquery/docs/reference/v2/tables/patch

2 个答案:

答案 0 :(得分:3)

  1. 我不一定会说使用嵌套字段始终是组织表格的首选方式;这取决于你的用例。通常,我发现嵌套数据通常更容易处理,特别是如果大多数查询不需要访问嵌套字段。

    但是,如果您在计算中大量使用嵌套字段,需要将不同的嵌套字段相互关联,或者返回多个重复字段的结果,那么最好使用多个表。

  2. 添加新列是仅元数据操作,因此它应该是O(1)时间;所涉及的表没有停机时间。 (请注意,仅支持添加列,而不是重命名或删除列。)

答案 1 :(得分:-1)

是。在某些非规范化的情况下,嵌套字段可能更有用,如

{
  "geo": {        
    "type": "Polygon",    
    "coordinates": [-122.82613, 45.393108 ]    
        }    
} 

此架构可能是

{"name":"geo","type":"record",
                "fields":
                  [
                    {"name":"type","type":"string"},
                    {"name":"coordinates","type":"float","mode":"repeated"}
                  ] 
               }

但是对于多级嵌套数组(如常规Twitter JSON),BigQuery似乎报告了一些问题.Below是一种非常常见的来自Twitter的JSON输出格式,其中Coordinates以嵌套(多级数组)表示:

{
  "geo": {
    "type": "Polygon",
    "coordinates": [
      [
        [
          -122.82613,
          45.393108
        ],
        [
          -122.82613,
          45.456634
        ],
        [
          -122.74354,
          45.456634
        ]
      ]
    ]
  }
}  

- >说实话,我仍然可以找到答案。