小编Law*_*nce的帖子

查询BigQuery嵌套/重复字段

我是BigQuery(和sql)的新手,我正在尝试设置一个表,其中每行包含一message列(字符串)和metadata列(重复).我想使用元数据列,以便我可以查询匹配某些元数据参数的消息.

例如,我的消息字符串是:

Hi honey, I'm home!

元数据列是描述消息的任意键/值对:

{"category": "personal", "message_type": "salutation"}

这将允许我问bigquery:

回到我这有一个所有消息categorypersonal(或message_typepersonal,等等)

重申一下,元数据键对于插入的每个消息行可能是不同的(例如,新行可能具有元数据键favorite_color而不是category).

这是我想出的架构,以支持我想要的元数据灵活性:

[
{"name": "message", "type": "string", "mode": "required"}
{"name": "metadata", "type": "record", "mode": "repeated", "fields": [ {"name": "key", 
                                                                        "type": "string", 
                                                                        "mode": "required"},
                                                                       {"name": "value", 
                                                                        "type": "string", 
                                                                        "mode": "required"}]}
]
Run Code Online (Sandbox Code Playgroud)

模式期望每个元数据条目/行包含一个名为key和列的列value.它似乎工作正常.

有趣的是,Bigquery将我的消息行表示为两行(我猜这称为"展平"?):

message                 | metadata_key    |    metadata_value
------------------------------------------------------------
Hi honey, I'm home!       category             personal
Hi honey, I'm …
Run Code Online (Sandbox Code Playgroud)

sql nested metadata google-bigquery

5
推荐指数
1
解决办法
2836
查看次数

标签 统计

google-bigquery ×1

metadata ×1

nested ×1

sql ×1