我想使用Google bigquery数据库查询比特币区块链中的记录子集。我去这里,然后单击view dataset
https://console.cloud.google.com/marketplace/details/bigquery-public-data/bitcoin-blockchain。然后,在左侧栏上,您似乎必须单击'bigquery-public-data'处的下拉列表,然后单击'bitcoin_blockchain'然后是'transactions'。然后,您必须在右侧单击“查询表”按钮。这是我找到表格的唯一方法-仅复制和粘贴下面的命令将不会重新创建错误。
根据上述说明后出现的表格,我注意到outputs
是record
类型。我只想从记录中查看一个string
。该字符串称为output_pubkey_base58
。
所以我阅读了文档,文档暗示命令将是:
SELECT outputs.output_pubkey_base58 FROM `bigquery-public-data.bitcoin_blockchain.transactions` LIMIT 1000;
我收到一个错误:Cannot access value on Array<Struct<output_satoshis ...
..我尝试了outputs[0].output_pubkey_base58
,没有用
令人讨厌的是,此问题的格式与第一个示例相同,在该示例中,他们以相同的命令从citiesLived.place
记录内部查询citiesLived
参数。 :https://cloud.google.com/bigquery/docs/legacy-nested-repeated
答案 0 :(得分:2)
您需要将数组unnest
放入新变量。
SELECT o.output_pubkey_base58
FROM
`bigquery-public-data.bitcoin_blockchain.transactions`,
UNNEST (outputs) as o
LIMIT
1000
答案 1 :(得分:0)
感到困惑的是关于旧版SQL和标准SQL。如文档https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#differences_in_repeated_field_handling
中所述,必须在标准SQL中使用UNNEST选择嵌套的重复叶字段 使用旧版SQL,您可以“点”到嵌套的重复字段中,而无需考虑重复发生的位置。在标准SQL中,尝试“加点”到嵌套的重复字段中会导致错误。