BigQuery定价:查询记录列的数据大小(成本)计算



BigQuery如何计算嵌套列的数据大小?

我有想要加载到BigQuery中的数据,但我不确定应该使用什么模式。

我拥有的数据(除其他外(有以下几列:

  • timestamp
  • sessionId
  • event(必填记录(
  • event.id
  • event.details(可为null的记录(
  • event.details.type
  • event.details.name
  • event.attributes(重复记录(
  • event.attributes.key
  • event.attributes.value

我的问题:

  1. 如果我只查询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
  1. 是否由于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中看到字节的差异,请注意,这只是读取字节数的估计。

最新更新