本頁說明如何在 Blockchain Analytics 中處理區塊鏈 UINT256 資料型別。
無損資料欄
Blockchain Analytics 不支援 UINT256 NUMERIC 欄,但部分區塊鏈資料類型具有高達 UINT256 的數值精確度。
為保留數值精確度,Blockchain Analytics 資料集會將 UINT256 值顯示在兩個不同的資料欄中:
- UINT128 NUMERIC 資料欄,精確度可能會降低。
- STRING 資料欄,包含字串形式的完整十進位值。字串
資料欄會標示
_lossless前置字串。
BigQuery 使用者定義函式 (UDF)
Google Cloud 託管的區塊鏈分析公用程式庫包含 UDF,可處理 UINT256 的運算和彙整作業。下列 UDF 與 UINT256 計算相關。
bqutil.fn.bignumber_addbqutil.fn.bignumber_subbqutil.fn.bignumber_mulbqutil.fn.bignumber_divbqutil.fn.bignumber_sumbqutil.fn.bignumber_avg
如要瞭解社群管理的 BigQuery UDF,請參閱 BigQuery UDF GitHub 存放區。
如需使用 BigQuery UDF 的操作說明,請參閱 BigQuery UDF 說明文件。
無損範例,使用 UDF 解決 UINT256 問題
前往 Google Cloud 控制台的「BigQuery」頁面。
下列查詢會載入「編輯器」欄位:
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