טיפול ב-UINT256

בדף הזה מוסבר איך לטפל בסוגי נתונים של UINT256 בבלוקצ'יין ב-Blockchain Analytics.

עמודות ללא אובדן נתונים

‫Blockchain Analytics לא תומך בעמודות מסוג UINT256 NUMERIC, אבל לחלק מסוגי הנתונים בבלוקצ'יין יש דיוק מספרי עד UINT256.

כדי לשמור על הדיוק המספרי, ערכי UINT256 במערכי הנתונים של Blockchain Analytics מוצגים בשתי עמודות נפרדות:

  • עמודה מסוג UINT128 NUMERIC עם פוטנציאל לאובדן דיוק.
  • עמודת STRING שמכילה את הערך העשרוני המלא בפורמט מחרוזת. עמודות המחרוזות מסומנות בקידומת _lossless.

פונקציות מוגדרות על ידי המשתמש (UDF) ב-BigQuery

ב-Google Cloud מתארחת ספריית כלי עזר של Blockchain Analytics שמכילה UDF לטיפול בחישובים ובצבירות של UINT256. הפונקציות הבאות להגדרת משתמש רלוונטיות לחישוב של 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

פרטים על פונקציות UDF ב-BigQuery שמנוהלות על ידי הקהילה זמינים במאגר GitHub של פונקציות UDF ב-BigQuery.

הוראות לשימוש בפונקציות UDF של BigQuery זמינות במאמר בנושא פונקציות UDF של BigQuery.

דוגמה ללא אובדן מידע עם UDF כפתרון עקיף ל-UINT256

במסוף 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