【问题标题】:Google BigQuery - nested fields or table joinGoogle BigQuery - 嵌套字段或表连接
【发布时间】:2014-07-05 05:47:23
【问题描述】:
  1. 在 Google BigQuery [1] 中,它支持嵌套字段类型,所以我可以说它比拆分成表和连接查询更受欢迎吗?

  2. 当我们需要添加新列时,Bigquery 支持补丁,在非常大的表中添加新列时的性能如何,例如1TB,有什么办法可以最小化。停机时间,因为我们可能需要每月更新几次列。

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

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

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:
    1. 我不一定会说使用嵌套字段始终是组织表格的首选方式;这取决于您的用例。一般来说,我发现嵌套数据通常更容易处理,尤其是在大多数查询不需要访问嵌套字段的情况下。

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

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

    【讨论】:

      【解决方案2】:

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

      {
        "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 似乎报告了一些问题。以下是 Twitter 的一种非常常见的 JSON 输出格式,其中坐标以嵌套(多级数组)表示:

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

      --> 老实说,我仍在寻找答案。

      【讨论】:

        猜你喜欢
        • 2015-06-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-19
        • 1970-01-01
        • 2016-12-24
        • 2020-12-22
        相关资源
        最近更新 更多