Как запросить строку внутри записи в Google BigQuery? Документы не работают - PullRequest
0 голосов
/ 16 марта 2019

Я хочу запросить подмножество записей в цепочке биткойнов, используя базу данных Google BigQuery.Я иду сюда и нажимаю view dataset https://console.cloud.google.com/marketplace/details/bigquery-public-data/bitcoin-blockchain. Затем на левой боковой панели кажется, что вам нужно щелкнуть раскрывающийся список в «bigquery-public-data», затем нажать «bitcoin_blockchain», а затем «транзакции».Затем справа вы должны нажать кнопку «Таблица запросов».Это единственный способ, который я нашел для выбора таблицы - простое копирование и вставка приведенной ниже команды не воссоздает ошибку.

Основываясь на таблице, которая появляется в соответствии с приведенными выше инструкциями, я заметил, что 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

Ответы [ 2 ]

2 голосов
/ 16 марта 2019

Вам нужно unnest массив в новую переменную.

SELECT o.output_pubkey_base58
FROM
  `bigquery-public-data.bitcoin_blockchain.transactions`, 
UNNEST (outputs) as o 
LIMIT
  1000
0 голосов
/ 18 марта 2019

Почувствуйте, что путаница здесь связана с устаревшим SQL и стандартным SQL. UNNEST должен использоваться в стандартном SQL, как описано в документе: https://cloud.google.com/bigquery/docs/reference/standard-sql/migrating-from-legacy-sql#differences_in_repeated_field_handling

Выбор вложенных повторяющихся листовых полей Используя устаревший SQL, вы можете «расставить» точки во вложенном повторяющемся поле без необходимости учитывать, где происходит повторение. В стандартном SQL попытка «поставить точку» во вложенном повторяющемся поле приводит к ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...