如何在Google BigQuery中查询记录内的字符串?文件无法运作

时间:2019-03-16 20:01:15

标签: 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.place记录内部查询citiesLived参数。 :https://cloud.google.com/bigquery/docs/legacy-nested-repeated

2 个答案:

答案 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中,尝试“加点”到嵌套的重复字段中会导致错误。