如何在Google Bigquery中的唱片中查询字符串?文档不起作用



我想使用Google BigQuery数据库查询比特币区块链中的记录子集。我去这里,单击view dataset https://console.cloud.google.com/marketplace/details/bigquery-public-data/bitcoin-blockchain。然后,在左侧栏上,似乎您必须单击" BigQuery-Public-Data"的下拉列表,然后单击" Bitcoin_blockchain",然后单击" Transactions"。然后,在右侧,您必须单击"查询表"按钮。这是我发现选择表的唯一方法 - 仅复制和粘贴下面的命令不会重新创建错误。

基于按照上述说明出现的表,我注意到outputsrecord类型。我想从记录内部仅查看一个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内部查询citiesLived.place参数,以相同的命令进行查询。:https://cloud.google.com/bigquery/docs/legacy-nested-repeated

您需要将数组 unnest到一个新变量中。

SELECT o.output_pubkey_base58
FROM
  `bigquery-public-data.bitcoin_blockchain.transactions`, 
UNNEST (outputs) as o 
LIMIT
  1000

感觉到这里的混乱是关于传统SQL和标准SQL的。UNNEST必须在标准SQL中使用,如文档中所述:https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql-legacy-sql#differences_in_in_repeated_repeated_repeated_field_field_handling

选择嵌套重复的叶片场使用Legacy SQL,您可以将"点"点"点"到嵌套的重复字段中,而无需考虑重复发生的位置。在标准SQL中,试图将"点"点"变成嵌套重复的字段会导致错误。

最新更新