BigQuery/以太坊数据集——如何编写代码

BigQuery/ Ethereum dataset - how to write the code

对于以太坊数据集,任何人都可以告诉我如果我知道特定合约的最后一个月的交易,我应该如何在 BigQuery 中编写? 例如,如果我想知道合约地址“0x41dbecc1cdc5517c6f76f6a6e836adbee2754de3”在上个月进行了多少笔交易 他的 每次我尝试分析这个地址时,它 returns 为零。例如

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

请帮帮我!

您只是获取了仅存在于一个 table 中而不存在于另一个中的地址 - 因此 JOIN 将其从结果中排除

如果您感兴趣的地址在一个(第一个)table 但不在另一个(第二个)

中,您可以使用 LEFT JOIN 而不是 JOIN

如下例

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

如果您出于某种原因需要 JOIN 工作 - 运行 首先在下面查询以获取 table 中存在的地址

#standardSQL
SELECT contracts.address
FROM `bigquery-public-data.crypto_ethereum.token_transfers` AS token_trs
JOIN `bigquery-public-data.crypto_ethereum.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.crypto_ethereum.token_transfers` AS token_trs
JOIN
  `bigquery-public-data.crypto_ethereum.contracts` AS contracts
ON
  (contracts.address = token_trs.token_address)
WHERE
  contracts.address = '0x298683bd77f17bca4f3fb37b5bf02f82ee81d3ef'

注意:我在您的地址值中看到额外的空格 - 很可能是复制粘贴问题,但想提及