BigQuery如何计算嵌套列的数据大小?
我有想要加载到BigQuery中的数据,但我不确定应该使用什么模式。
我拥有的数据(除其他外(有以下几列:
timestamp
sessionId
event
(必填记录(event.id
event.details
(可为null的记录(event.details.type
event.details.name
event.attributes
(重复记录(event.attributes.key
event.attributes.value
我的问题:
-
如果我只查询
event.id
,其他event.*
列中的数据也会被扫描吗?从
table_name
中选择事件.id
BigQuery UI在现有表上显示这些查询的扫描数据大小没有差异(该表没有不可重复的嵌套列(。
SELECT attrs.name FROM `other_table_name`, UNNEST(attributes) AS attrs
SELECT attrs.name, attrs.value FROM `other_table_name`, UNNEST(attributes) AS attrs
- 是否由于UNNEST操作而扫描了两个
attributes.*
列
不幸的是,来自谷歌的(详细(信息没有回答这些问题,因为它没有提到带有查询定价的嵌套列,并且在描述数据大小时过于模糊
我刚刚用一个公共表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
并返回经过处理的CCD_ 16。
查询2:
SELECT
inputs.input_script_bytes
FROM
`bigquery-public-data.bitcoin_blockchain.transactions`,
UNNEST(inputs) AS inputs
LIMIT
100
并返回处理后的CCD_ 17。
因此,在回答您的第一个问题时,不应扫描event.*
的其他列。关于第二个问题,我在运行查询时看到不同的扫描数据大小。如果您在Validator中看到字节的差异,请注意,这只是读取字节数的估计。