Questa pagina fornisce informazioni su come gestire i tipi di dati UINT256 della blockchain in Blockchain Analytics.
Colonne senza perdita
Blockchain Analytics non supporta le colonne NUMERIC 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 NUMERIC UINT128 con potenziale perdita di precisione.
- Una colonna STRING contenente il valore decimale completo in formato stringa. Le colonne
stringa sono contrassegnate con il prefisso
_lossless.
Funzioni definite dall'utente (UDF) di BigQuery
Google Cloud ospita una libreria di utilità Blockchain Analytics che contiene UDF per la gestione di calcoli e aggregazioni UINT256. Le seguenti UDF sono pertinenti per il calcolo di UINT256.
bqutil.fn.bignumber_addbqutil.fn.bignumber_subbqutil.fn.bignumber_mulbqutil.fn.bignumber_divbqutil.fn.bignumber_sumbqutil.fn.bignumber_avg
Consulta il repository GitHub delle funzioni definite dall'utente BigQuery per informazioni dettagliate sulle funzioni definite dall'utente BigQuery gestite dalla community.
Consulta la documentazione sulle UDF di BigQuery per istruzioni sull'utilizzo delle UDF di BigQuery.
Esempio senza perdita con soluzione alternativa UDF per UINT256
Nella console Google Cloud , 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