google-bigquery - Bigquery比特币数据集SQL查询获取时间戳后的交易
问题描述
我想在时间戳 1572491526 之后创建所有比特币交易的 CSV。所以我尝试了下面的代码。我希望 CSV 有四列 -
transaction_id, timestamp, input, output
1 1 aaa bbb
1 1 abc cde
2 2 pqr xyz
到目前为止我试过这个
from google.cloud import bigquery
client = bigquery.Client()
QUERY = """
SELECT timestamp, transaction_id, inputs, outputs
FROM bigquery-public-data.bitcoin_blockchain.transactions
WHERE timestamp > 1572491526
LIMIT 1
"""
# note that max_gb_scanned is set to 24, rather than 1
queryjob = client.query(QUERY) # API request
rows = queryjob.result()
row = list(rows)
import pandas as pd
headlines = pd.DataFrame(data=[list(x.values()) for x in row], columns=list(row[0].keys()))
headlines
但我得到的输出不正确。如何解决这个问题
timestamp transaction_id inputs outputs
0 1237254030000 8425ac5096ff2b55e0feefa7c78ba609a245e6f185ecde... [{'input_script_bytes': b'\x04\xff\xff\x00\x1d... [{'output_satoshis': 5000000000, 'output_scrip...
解决方案
你得到的输出是正确的,我在 Bigquery UI 中测试了你的查询,似乎和你得到的一样。请考虑字段输入和输出是数组,可能存在混淆。
另外,我测试了你的代码,我得到了相同的输出
from google.cloud import bigquery
client = bigquery.Client()
QUERY = """
SELECT timestamp, transaction_id, inputs, outputs
FROM bigquery-public-data.bitcoin_blockchain.transactions
WHERE timestamp > 1572491526
LIMIT 1
"""
# note that max_gb_scanned is set to 24, rather than 1
queryjob = client.query(QUERY) # API request
rows = queryjob.result()
row = list(rows)
import pandas as pd
headlines = pd.DataFrame(data=[list(x.values()) for x in row], columns=list(row[0].keys()))
headlines.to_csv('output.csv', index=False, header=True)
推荐阅读
- facebook-graph-api - Facebook Javascript SDK:如果页面(该用户是管理员)类别名称===登录检查“音乐家/乐队”
- vim - Vi 显示多余的字符 ( *>> ) 应该是空格
- java - 如何在静态参数化方法中调用 Intent 并启动新活动
- django - '错误:字符不存在关系',芹菜与 django 错误
- javascript - Firebase 云函数和 PWA 服务工作者
- docker - 在 Google Cloud 构建中的两个容器之间进行通信
- c# - 通过 Socket TCP/IP 发送数据时出错
- airflow - Airflow API 文档位置
- c# - 在 Mongodb 中,如何使用两个“对齐”的搜索参数数组来搜索文档?
- c# - 获取唯一进程 ID MSTest 并行测试