BigQuery / Ethereum набор данных - как написать код - PullRequest
0 голосов
/ 04 ноября 2018

Что касается набора данных ethereum, кто-нибудь может сказать мне, как мне писать в BigQuery, если бы я знал транзакции определенного контракта за последний месяц? Например, если бы я знал, сколько транзакций было сделано за последний месяц для адреса контракта "0x41dbecc1cdc5517c6f76f6a6e836adbee2754de3" его Каждый раз, когда я пытаюсь проанализировать этот адрес, он возвращает ноль. Например

SELECT
  from_address,
  to_address,
  value,
  transaction_hash
FROM
  `bigquery-public-data.ethereum_blockchain.token_transfers` AS token_trs
JOIN
  `bigquery-public-data.ethereum_blockchain.contracts` AS contracts
ON
  (contracts.address = token_trs.token_address)
WHERE
  contracts.address = ' 0x41dbecc1cdc5517c6f76f6a6e836adbee2754de3 '

Пожалуйста, пожалуйста, помогите мне!

1 Ответ

0 голосов
/ 04 ноября 2018

Вы просто взяли адрес, который существует только в одной таблице, а не в другой - таким образом, JOIN исключает его из результата

Вы можете использовать LEFT JOIN вместо JOIN, если интересующий вас адрес находится в одной (первой) таблице, но не в другой (второй)

Как в примере ниже

#standardSQL
SELECT
  from_address,
  to_address,
  value,
  transaction_hash
FROM
  `bigquery-public-data.ethereum_blockchain.token_transfers` AS token_trs
LEfT JOIN
  `bigquery-public-data.ethereum_blockchain.contracts` AS contracts
ON
  (contracts.address = token_trs.token_address)
WHERE
  token_trs.token_address = '0x41dbecc1cdc5517c6f76f6a6e836adbee2754de3'   

Если вам по какой-то причине нужен JOIN для работы - сначала выполните запрос ниже, чтобы получить адрес, который присутствует в обеих таблицах

#standardSQL
SELECT contracts.address
FROM `bigquery-public-data.ethereum_blockchain.token_transfers` AS token_trs
JOIN `bigquery-public-data.ethereum_blockchain.contracts` AS contracts
ON contracts.address = token_trs.token_address
LIMIT 10   

Возьмите любой адрес из результата и запустите исходный запрос с ним

Например:

#standardSQL
SELECT
  from_address,
  to_address,
  value,
  transaction_hash
FROM
  `bigquery-public-data.ethereum_blockchain.token_transfers` AS token_trs
JOIN
  `bigquery-public-data.ethereum_blockchain.contracts` AS contracts
ON
  (contracts.address = token_trs.token_address)
WHERE
  contracts.address = '0x298683bd77f17bca4f3fb37b5bf02f82ee81d3ef'

Примечание: я вижу дополнительные пробелы в вашем значении адреса - скорее всего, проблема с копированием вставки, но я хотел бы упомянуть

...