Skip to content



Google Cloud Crypto Dataset


Big query:

Each BigQuery dataset contains several tables and views. Views are virtual tables, defined by queries upon actual tables. Unlike tables, views are not persisted. So it is important to store query results into a destination table if you want to persist it (instead of saving as a view).

Standard SQL is the default language for Big Query. It is basically same as the "Legacy SQL", but can be surprising in a lot of ways. Let's start with some of the snippets for our task - extracting address-transaction graph from the complete transactions datastore:

SELECT * FROM `bigquery-public-data.crypto_bitcoin.inputs`
  SELECT COUNT(1) FROM UNNEST(addresses) AS addr
  WHERE addr IN ("1GoXSErTnH7GsaYRCe37mqWU6RK6yn4Fqy",
) >= 1
block_number > 570000

For each input, it might be associated with multiple addresses that contribute to this portion of money, but normally there is only a single address that pays for that input value. Using the expression UNNEST(addresses) , we transformed the ARRAY type field into a set of rows (for more, check out documentation here). We will count the number of addresses that is one of "1GoXS..", "1C36o..", "12DSi.. " for each input. We return all inputs that have at least such address and has a block_number more than 570000 (at the time of writing, they mean pretty recent blocks).