选择/提取 JSON 元素时的高效 BigQuery
Posted
技术标签:
【中文标题】选择/提取 JSON 元素时的高效 BigQuery【英文标题】:Efficient BigQuery'ing when selecting/extracting a JSON element 【发布时间】:2021-04-06 21:34:03 【问题描述】:替代标题:在提取 JSON 元素之前对表进行子集化
我需要在 BigQuery 上对一个非常大的表进行子集化。我将过滤(加入)以实现此子集的列是不是 JSON 数组。但是,我想在之后从 JSON 数组中包含/提取补充列。无论我如何重新排列查询,当我包含提取的 JSON 元素时,它似乎都会处理完整(即非子集)表。
作为 MWE,考虑一个我正在从 @felipe-hoffa here 改编/借用的查询:
SELECT id
FROM `githubarchive.day.20180830`
WHERE type='PushEvent'
AND id='8188163772'
此查询处理 33.9 MB。
但是,如果我从 JSON 数组中添加一个提取的列(同样,我不是子集):
SELECT id, JSON_EXTRACT_SCALAR(payload, '$.size') AS size
FROM `githubarchive.day.20180830`
WHERE type='PushEvent'
AND id='8188163772'
...然后进程图跳转到 3.5 GB(即它正在查询整个表)。
知道如何更有效地做到这一点并降低每次查询的成本吗?
【问题讨论】:
只要你接触到tat专栏payload
——即使你只使用了一小部分,你也会付出代价!唯一的方法是考虑分区/集群...
谢谢@MikhailBerlyant,那是我的恐惧!您介意将您的评论移至答案,我会将其标记为已接受的解决方案吗?
【参考方案1】:
只要您接触到该列payload
- 即使您只使用了其中的一小部分,您也会为它付费!唯一的方法是考虑分区/集群...
【讨论】:
以上是关于选择/提取 JSON 元素时的高效 BigQuery的主要内容,如果未能解决你的问题,请参考以下文章
从 json 文件 bigquery 中提取 Json Array 元素