BigQuery如何计算要处理的嵌套列的数据大小?
我有一些要加载到BigQuery中的数据,但是我不确定应该使用的模式。
我拥有的数据(除其他外)具有以下列:
timestamp
sessionId
event
(必需的记录)event.id
event.details
(可为空的记录)event.details.type
event.details.name
event.attributes
(重复记录)event.attributes.key
event.attributes.value
我的问题:
如果仅查询event.id
,是否还会扫描其他event.*
列中的数据?
SELECT event.id FROM table_name
BigQuery用户界面在现有表上显示的这些查询的扫描数据大小没有差异(该表没有不可重复的嵌套列)。
SELECT attrs.name FROM `other_table_name`, UNNEST(attributes) AS attrs
SELECT attrs.name, attrs.value FROM `other_table_name`, UNNEST(attributes) AS attrs
attributes.*
列?不幸的是,来自Google的(详细)信息无法回答这些问题,因为它没有提及query pricing的嵌套列,并且在描述data sizes时也含糊不清
答案 0 :(得分:1)
我刚刚使用公用表bigquery-public-data.bitcoin_blockchain.transactions
进行了测试。我已经运行了以下查询:
查询1:
SELECT
inputs.input_script_bytes,
inputs.input_script_string,
inputs.input_script_string_error,
inputs.input_sequence_number
FROM
`bigquery-public-data.bitcoin_blockchain.transactions`,
UNNEST(inputs) AS inputs
LIMIT
100
它返回327 GB
已处理。
查询2:
SELECT
inputs.input_script_bytes
FROM
`bigquery-public-data.bitcoin_blockchain.transactions`,
UNNEST(inputs) AS inputs
LIMIT
100
它返回100 GB
已处理。
因此,回答您的第一个问题时,event.*
的其他列不应扫描。关于第二个问题,运行查询时,我看到了不同的扫描数据大小。如果您在Validator中看到字节差,请注意,这只是对读取的字节数的估计。