Bigquery 表元数据:类型 2 表为空但可查询

Posted

技术标签:

【中文标题】Bigquery 表元数据:类型 2 表为空但可查询【英文标题】:Bigquery tables meta data: type 2 tables are empty but queryable 【发布时间】:2021-12-27 08:14:56 【问题描述】:

我想知道为什么在 crypto_bitcoin 数据集上对空表(如 inputs)进行查询会返回所需的结果!

让我们检查一下表的元数据:

#              project_id      dataset_id                          table_id  creation_time  last_modified_time  row_count     size_bytes  type
# 0  bigquery-public-data  crypto_bitcoin                            blocks  1547490497012       1637478718029     710664      231483216     1
# 1  bigquery-public-data  crypto_bitcoin                            inputs  1547524356605       1637411737414          0              0     2
# 2  bigquery-public-data  crypto_bitcoin                           outputs  1547524350726       1637411717125          0              0     2
# 3  bigquery-public-data  crypto_bitcoin                      transactions  1547491686807       1637478717455  688583399  1532618029551     1
# 4  bigquery-public-data  crypto_bitcoin  transactions-2021-10-28T23_18_45  1635477564574       1635477564574  682200389  1520464709331     6

这些查询似乎报告了 inputsoutputs 的 0 字节,因此它们是免费的。

但是,以下查询返回结果:

query = """
SELECT inputs.value as value
FROM `bigquery-public-data.crypto_bitcoin.inputs` as inputs
LIMIT 10
"""
transactions = crypto_bitcoin.query_to_pandas_safe(query, max_gb_scanned=27)
print(transactions)


                   value
0      1121913.000000000
1      2530000.000000000
2     43852957.000000000
3      6064813.000000000
4       200000.000000000
5    921665002.000000000
6       159497.000000000
7       266185.000000000
8  37268226789.000000000
9      9493833.000000000

【问题讨论】:

【参考方案1】:

inputsoutputs 都是视图,因此它们本身不存储任何数据,这就是为什么行和字节大小均为 0。它们都引用了 transactions 数据集,因此适用于该数据集的大小。

【讨论】:

以上是关于Bigquery 表元数据:类型 2 表为空但可查询的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery bq 命令 - 仅在表为空或不存在时加载

返回对象不为空但为空

jQuery为空但排除某个元素

Google BigQuery 中的空嵌套字段

gridcontrol从表为空时如何显示

在MyEclipse中执行模糊查询,ResultSet结果集不为空但rs.next()为false,求解。