Questa pagina fornisce informazioni su come gestire i tipi di dati UINT256 della blockchain in Blockchain Analytics.
Colonne senza perdita di dati
Blockchain Analytics non supporta le colonne NUMERICHE UINT256, ma alcuni tipi di dati della blockchain hanno una precisione numerica fino a UINT256.
Per preservare la precisione numerica, i set di dati di Blockchain Analytics presentano i valori UINT256 in due colonne separate:
- Una colonna NUMERICA UINT128 con una potenziale perdita di precisione.
- Una colonna STRING contenente il valore decimale completo in formato stringa. Le colonne di stringhe sono contrassegnate con il prefisso
_lossless.
Funzioni definite dall'utente (UDF) di BigQuery
Google Cloud ospita una libreria di utilità di Blockchain Analytics che contiene UDF per la gestione di calcoli e aggregazioni UINT256. Le seguenti UDF sono pertinenti per il calcolo UINT256.
bqutil.fn.bignumber_addbqutil.fn.bignumber_subbqutil.fn.bignumber_mulbqutil.fn.bignumber_divbqutil.fn.bignumber_sumbqutil.fn.bignumber_avg
Per istruzioni sull'utilizzo delle UDF di BigQuery, consulta la documentazione delle UDF di BigQuery.
Esempio senza perdita di dati con soluzione alternativa UDF per UINT256
Nella Google Cloud console, vai alla pagina BigQuery.
La seguente query viene caricata nel campo Editor:
WITH withdrawals AS (
SELECT
w.amount_lossless AS amount,
DATE(b.block_timestamp) AS block_date
FROM
bigquery-public-data.blockchain_analytics_ethereum_mainnet_us.blocks AS b
CROSS JOIN UNNEST(withdrawals) AS w
)
SELECT
block_date,
bqutil.fn.bignumber_div(bqutil.fn.bignumber_sum(ARRAY_AGG(amount)), "1000000000") AS eth_withdrawn
FROM
withdrawals
GROUP BY 1 ORDER BY 1 DESC