在Google BigQuery [1]中,它支持嵌套字段类型,所以我可以说它是组织的首选方式,而不是分割成表格和带连接的查询吗?
当我们需要添加新列时,Bigquery支持补丁,在非常大的表中添加新列时的性能如何,例如1TB,有没有办法分钟。停工时间,因为我们可能需要每月更新一次列。
[1] https://developers.google.com/bigquery/docs/data#nested
[2] https://developers.google.com/bigquery/docs/reference/v2/tables/patch
答案 0 :(得分:3)
我不一定会说使用嵌套字段始终是组织表格的首选方式;这取决于你的用例。通常,我发现嵌套数据通常更容易处理,特别是如果大多数查询不需要访问嵌套字段。
但是,如果您在计算中大量使用嵌套字段,需要将不同的嵌套字段相互关联,或者返回多个重复字段的结果,那么最好使用多个表。
添加新列是仅元数据操作,因此它应该是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
]
]
]
}
}
- >说实话,我仍然可以找到答案。