亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Google BigQuery Sum 返回錯誤結果

Google BigQuery Sum 返回錯誤結果

呼喚遠方 2021-07-16 15:01:43
伙計們,我正在對公共區塊鏈數據運行此查詢,以獲取已銷毀的代幣總數。但是 SUM 返回的結果比真實的要少得多(在 Pandas 中運行沒有 sum 的相同查詢并運行 sum)。它給出 8306 而熊貓 328608。log.data - 十六進制數SELECT  SUM(SAFE_CAST(log.data as INT64)/POW(10,18))FROM  `bigquery-public-data.ethereum_blockchain.logs` AS logWHERE TRUE  AND log.address = '0xf53ad2c6851052a81b42133467480961b2321c09'  AND log.block_timestamp >= '2018-01-01 00:00:01'  AND log.block_timestamp <= '2018-12-01 00:00:01'  AND SUBSTR(log.topics[SAFE_OFFSET(0)], 1, 10) IN ('0x42696c68','0xcc16f5db')我不太明白為什么會發生這種情況。將不勝感激回答)
查看完整描述

1 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

問題是一些log.data值被排除在 之外SUM,因為它們不適合范圍,INT64因此SAFE_CAST(log.data AS INT64)返回NULL。作為一個例子,0x00000000000000000000000000000000000000000000000080b7978da47c78d2是大于max更大INT64的值9223372036854775807,這是0x7FFFFFFFFFFFFFFF十六進制的。


您可以改為將log.data值強制轉換為FLOAT64類型,這會產生更接近您使用 Pandas 看到的結果:


SELECT

  SUM(CAST(log.data as FLOAT64)/POW(10,18))

FROM

  `bigquery-public-data.ethereum_blockchain.logs` AS log

WHERE TRUE

  AND log.address = '0xf53ad2c6851052a81b42133467480961b2321c09'

  AND log.block_timestamp >= '2018-01-01 00:00:01'

  AND log.block_timestamp <= '2018-12-01 00:00:01'

  AND SUBSTR(log.topics[SAFE_OFFSET(0)], 1, 10) IN ('0x42696c68','0xcc16f5db')

這返回329681.7942642243.


查看完整回答
反對 回復 2021-07-27
  • 1 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號