UINT256 처리

이 페이지에서는 블록체인 분석에서 블록체인 UINT256 데이터 유형을 처리하는 방법을 설명합니다.

무손실 열

Blockchain Analytics는 UINT256 NUMERIC 열을 지원하지 않지만 일부 블록체인 데이터 유형의 숫자 정밀도는 최대 UINT256입니다.

숫자 정밀도를 유지하기 위해 블록체인 분석 데이터 세트는 UINT256 값을 다음 두 개의 별도 열에 표시합니다.

  • 정밀도가 떨어질 수 있는 UINT128 NUMERIC 열입니다.
  • 문자열 형식의 전체 십진수 값이 포함된 문자열 열입니다. 문자열 열은 _lossless 접두사로 표시됩니다.

BigQuery 사용자 정의 함수 (UDF)

Google Cloud는 UINT256 계산 및 집계를 처리하기 위한 UDF가 포함된 블록체인 분석 유틸리티 라이브러리를 호스팅합니다. 다음 UDF는 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

커뮤니티 관리 BigQuery UDF에 관한 자세한 내용은 BigQuery UDF GitHub 저장소를 참고하세요.

BigQuery UDF 사용에 관한 안내는 BigQuery UDF 문서를 참고하세요.

UINT256의 UDF 해결 방법이 적용된 무손실 예시

Google Cloud 콘솔에서 BigQuery 페이지로 이동합니다.

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