我正在尝试为一个巨大的JSON数据集创建一个模式。数据已经是非规范化形式(我从第三方那里得到了这样的东西)。我现在面临的一个问题是,非规范化的JSON具有字符串数组(有时是对象),这转化为经典SQL表之间的一对多关系。这是BQ不承认的。
查找数组是否意味着每个这样的数组都需要放在自己的表中?
我创建了一个简单的例子:
{ "name": "John Doe", "books_read": [ "Jungle Book", "Cinderella", "Harry Potter", "The Little Prince" ] }
除了创建两个表users
和books_read
并链接它们之外,此示例数据是否有良好的架构?
我非常专注于非规范化,以至于创建多个表感觉就像违背 BQ。
由于 BigQuery 支持嵌套和结构化数据(与 JSON 模型相同),因此最好将其建模为具有以下架构的单个表:
STRING name
REPEATED STRING books_read
BigQuery 的 SQL 方言有很多支持来处理这种重复的结构。