Google bigquery 在Bigquery中选择不会检索超过53000行的所有数据

Google bigquery 在Bigquery中选择不会检索超过53000行的所有数据,google-bigquery,Google Bigquery,bigquery中名为student_master的表有70000行,我希望使用此查询检索行。我在执行此操作时没有发现任何错误,但是,它只是检索52226行,而不是全部。我尝试像下面的代码一样在分区上使用行数,但仍然没有得到所有数据。我该怎么办 我使用的想法是使用id_student的两个查询顺序,限制35000,并进行asc查询1,descquery2,但如果数据增加(比如200000行),它将不起作用 data= [] sql = ( "SELECT id_student, class,na

bigquery中名为student_master的表有70000行,我希望使用此查询检索行。我在执行此操作时没有发现任何错误,但是,它只是检索52226行,而不是全部。我尝试像下面的代码一样在分区上使用行数,但仍然没有得到所有数据。我该怎么办

我使用的想法是使用id_student的两个查询顺序,限制35000,并进行asc查询1,descquery2,但如果数据增加(比如200000行),它将不起作用

data= []
sql = ( "SELECT id_student, class,name," +
        "   ROW_NUMBER() OVER (PARTITION BY class ORDER BY class ASC) row_num," +
        "FROM" +
        "   [project_name.dataset.student_master]" +
        "WHERE not class = " + element['class']
        )
query = client.run_sync_query(sql)
query.timeout_ms = 20000
query.run()
for row in query.rows:
    data.append(row)
return data

一般来说,对于大型导出,您应该运行导出作业,将数据放入GCS中的文件中

但在这种情况下,您可能只需要浏览更多页面的结果:

如果查询返回的行不适合初始响应,则需要通过fetch_data获取其余行:


我能够通过查询公共数据集收集200000多行数据,并通过使用计数器变量进行验证:

query_job = client.query("""
    SELECT ROW_NUMBER() OVER (PARTITION BY token_address ORDER BY token_address ASC) as row_number,token_address
    FROM `bigquery-public-data.ethereum_blockchain.token_transfers`
    WHERE token_address = '0x001575786dfa7b9d9d1324ec308785738f80a951'
    ORDER BY 1
    """)
contador = 0
for row in query_job:
    contador += 1
    print(contador,row)

你确定菲利佩?我导出了比上面更多的行。我前面有一个示例,其中98541行使用query\u job=client.querySELECT*FROM project.dataset.table df=query\u job.result.to\u dataframe检索特定数据,请检查问题,因为它使用query检索特定数据。谢谢,FelipeSo,这是一个简单的问题,但由于您的查询有WHERE语句,如果在BQ UI中运行它,您会得到70000行吗?您是否尝试过删除query.timeout_ms?否,它是69900行,通过删除query.timeout仍然可以检索相同的结果,如果只获取id和类字段,则可以工作。但是,如果获取所有字段,则不起作用。真奇怪。是否存在限制数据大小的条件?我刚刚从bigquery public data.ethereum_blockchain.token_传输了'WHERE token_address='0x001575786dfa7b9d9d1324ec308785738f80a951'顺序为1',并使用相同的代码获得203435行。您可以指定您的库版本吗?我建议尝试使用pip安装升级您的客户端库-升级google cloud bigquery以使用最新版本,因为我使用的是1.7.0版,并获得了所需的结果
query_job = client.query("""
    SELECT ROW_NUMBER() OVER (PARTITION BY token_address ORDER BY token_address ASC) as row_number,token_address
    FROM `bigquery-public-data.ethereum_blockchain.token_transfers`
    WHERE token_address = '0x001575786dfa7b9d9d1324ec308785738f80a951'
    ORDER BY 1
    """)
contador = 0
for row in query_job:
    contador += 1
    print(contador,row)