Gestione di UINT256

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_add
  • bqutil.fn.bignumber_sub
  • bqutil.fn.bignumber_mul
  • bqutil.fn.bignumber_div
  • bqutil.fn.bignumber_sum
  • bqutil.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.

Vai a 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