Penanganan UINT256

Halaman ini memberikan informasi tentang cara menangani jenis data UINT256 blockchain di Blockchain Analytics.

Kolom tanpa kehilangan data

Blockchain Analytics tidak mendukung kolom NUMERIK UINT256, tetapi beberapa jenis data blockchain memiliki presisi numerik hingga UINT256.

Untuk mempertahankan presisi numerik, set data Blockchain Analytics menampilkan nilai UINT256 dalam dua kolom terpisah:

  • Kolom NUMERIK UINT128 dengan potensi kehilangan presisi.
  • Kolom STRING yang berisi nilai desimal lengkap dalam bentuk string. Kolom string ditandai dengan awalan _lossless.

Fungsi yang Ditentukan Pengguna (UDF) BigQuery

Google Cloud menghosting library utilitas Analisis Blockchain yang berisi UDF untuk menangani komputasi dan agregasi UINT256. UDF berikut relevan untuk komputasi 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

Lihat repositori GitHub UDF BigQuery untuk mengetahui detail tentang UDF BigQuery yang dikelola komunitas.

Lihat dokumentasi UDF BigQuery untuk mengetahui petunjuk penggunaan UDF BigQuery.

Contoh lossless dengan solusi UDF untuk UINT256

Di konsol Google Cloud , buka halaman BigQuery.

Buka BigQuery

Kueri berikut dimuat ke dalam kolom 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